分类 swift 下的文章

Reachability检测联网状态

//
//  ViewController.swift
//  位移枚举
//
//  Created by zhang on 16/2/24.
//  Copyright © 2016年 jin. All rights reserved.
//
import UIKit

class ViewController: UIViewController {
    // 需要下载这个类
    let reach = Reachability(hostName: "baidu.com")
    override func viewDidLoad() {
        super.viewDidLoad()
        self.showStatus()
        // 监听联网状态的改变
        NSNotificationCenter.defaultCenter().addObserver(self, selector: "showStatus", name: kReachabilityChangedNotification, object: nil)
        // Do any additional setup after loading the view, typically from a nib.
    }
    deinit
    {
        // 移除整个控制器里所有的监听
        NSNotificationCenter.defaultCenter().removeObserver(self)
        // 移除监听
        NSNotificationCenter.defaultCenter().removeObserver(self, name: kReachabilityChangedNotification, object: nil)
    }
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
                // Dispose of any resources that can be recreated.
    }
    func showStatus()
    {
        switch reach.currentReachabilityStatus().rawValue
        {
        case 0:
            print("没有联网")
            break
        case 1:
            print("wifi")
            break
        case 2:
            print("流量")
            break
        default:
            break
        }
    }
}

使用struct,OptionSetType实现oc的enum的多选

//
//  ViewController.swift
//  位移枚举
//
//  Created by zhang on 16/2/24.
//  Copyright © 2016年 jin. All rights reserved.
//
struct Jin:OptionSetType {
    let rawValue:Int
    static let Left = Jin(rawValue: 1<<0)
    static let Right = Jin(rawValue: 1<<1)
    static let Top = Jin(rawValue: 1<<2)
    static let Bottom = Jin(rawValue: 1<<3)
}
import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        let jin:Jin = [.Bottom,.Left,.Top]
        self.test(jin)
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    func test(value:Jin)
    {
        if value.contains(.Left){
            print("left")
        }
        if value.contains(.Right){
            print("Right")
        }
        if value.contains(.Top){
            print("Top")
        }
        if value.contains(.Bottom){
            print("Bottom")
        }
    }
}

SDWebImage基本使用

//
//  ViewController.swift
//  SDWebImage使用
//
//  Created by admin on 16/2/24.
//  Copyright © 2016年 jin. All rights reserved.
//

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var slider: UISlider!
    let imageView = UIImageView(frame: CGRectMake(0, 0, 200, 300))
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        self.downloadC()

        // 属性解释
        SDWebImageOptions.RetryFailed// 失败重新下载
        SDWebImageOptions.CacheMemoryOnly// 只缓存在内存缓存
        SDWebImageOptions.LowPriority// ui更新的时候暂停下载图片
        self.view.addSubview(imageView)
    }
    // 渐近式
    func downloadC()
    {
        imageView.sd_setImageWithURL(NSURL(string: "http://b.hiphotos.baidu.com/image/pic/item/42166d224f4a20a43721cde195529822720ed0dd.jpg"), placeholderImage: nil, options: SDWebImageOptions.ProgressiveDownload, completed: nil)
    }
    // 一般使用
    func downloadA()
    {
        imageView.sd_setImageWithURL(NSURL(string: "http://b.hiphotos.baidu.com/image/pic/item/42166d224f4a20a43721cde195529822720ed0dd.jpg"), placeholderImage: nil, options: SDWebImageOptions.CacheMemoryOnly, completed: nil)
    }
    // 显示进度
    func downloadB()
    {
        // 进度函数
        let progress:SDWebImageDownloaderProgressBlock = {
            // 参数对应已经下载的大小和文件总大小
            (downloadSize:Int,totalSize:Int) in
            print(Float(downloadSize) / Float(totalSize))
            NSOperationQueue.mainQueue().addOperationWithBlock({ [weak self] () -> Void in
                self?.slider.value = Float(downloadSize) / Float(totalSize)
                })
        }
        // 下载完成函数
        let complation:SDWebImageCompletionBlock = {
            (image:UIImage!, error:NSError!, sdCacheType:SDImageCacheType, url:NSURL!) in
            print("下载完成啦")
        }
        // 下载时更新进度条
        imageView.sd_setImageWithURL(NSURL(string: "http://b.hiphotos.baidu.com/image/pic/item/42166d224f4a20a43721cde195529822720ed0dd.jpg"), placeholderImage: nil, options: SDWebImageOptions.CacheMemoryOnly, progress: progress, completed: complation)
    }
}

自定义NSOperation类

//
//  ViewController.swift
//  缓存类使用
//
//  Created by admin on 16/2/24.
//  Copyright © 2016年 jin. All rights reserved.
//

import UIKit

class ViewController: UIViewController{

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }
    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
        let queue = NSOperationQueue()
        let operation = MyOperation()
        queue.addOperation(operation)
        // 线程执行完毕调用的方法
        operation.completionBlock = {
            ()->(Void) in
            print("线程执行完毕,输出信息")
        }
    }
}

class MyOperation: NSOperation {
    // 注意点:需要自己手动添加自动释放池
    // 自定义的操作,可以取消
    override func main() {
        super.main()
        func autorelasepool(code:()->(Void)){
            code()
        }
        autorelasepool { () -> (Void) in
            // 如果操作在队列里,还没有调度,就直接return
            if self.cancelled == true
            {
                return
            }
            NSThread.sleepForTimeInterval(2)
            print("执行结束")
        }
    }
}

NSCache使用

//
//  ViewController.swift
//  缓存类使用
//
//  Created by admin on 16/2/24.
//  Copyright © 2016年 jin. All rights reserved.
//

import UIKit

class ViewController: UIViewController,NSCacheDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }
    lazy var cache:NSCache = {
        let tempCache = NSCache()
        // NSUInteger totalCostLimit;  "成本" 限制, 默认是 0 (没有限制)
        // 图片 像素 == 总的像素点
//        tempCache.totalCostLimit = 10
        // countLimit;  数量的限制  默认是 0(无限制) 
        // 设置数量的限制。 一旦超出限额,会自动删除之前添加的内容
        tempCache.countLimit = 10
        tempCache.delegate = self
        return tempCache
    }()
    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {

    }
    @IBAction func readCaches(button:UIButton)
    {

        for var i = 0;i < 20;i++
        {
            // 读缓存,不存在则为nil
            print(cache.objectForKey("\(i)"))
        }
    }
    @IBAction func writeCaches(button:UIButton)
    {
        for var i = 0;i < 20;i++
        {
            // 加缓存
            cache.setObject(i, forKey: "\(i)")
        }
    }
    // NSCache代理,清除缓存时会通知
    func cache(cache: NSCache, willEvictObject obj: AnyObject) {
        print("清空缓存\(obj)")
    }
}