NKNetworkKit 0.2.7

NKNetworkKit 0.2.7

测试已测试
Lang语言 SwiftSwift
许可 MIT
Released最新发布2015年9月
SPM支持 SPM

prcela 维护。



NKNetworkKit

NetworkKit 是一个 swift 库,它隐藏了执行网络请求的一些复杂性。

特征

  • 易于发送请求的语法
  • 使用闭包处理网络响应
  • 发送 json 数据
  • 启动和自动恢复文件下载的机制
  • 监视下载进度比率

基本用法

将此工具包导入到您的 swift 文件中

import NKNetworkKit

简单请求

    let request = NKRequest(host: "http://ip.jsontest.com")
    NKProcessor.process(request)

NKProcessor 将请求添加到操作队列并以异步方式处理。

要处理响应,请添加以下闭包

    NKProcessor.process(request,
        success: {response in
            let result = response.parsedJsonObject() as! NSDictionary
            NSLog("response: \(result)")
        },
        failure: nil,
        finish: nil)

发送一些 json 数据

    let data = NSJSONSerialization.dataWithJSONObject(["text":"example_text"],
        options:NSJSONWritingOptions(0),
        error:nil)
    let postRequest = NKRequest(host: "http://httpbin.org", path: "post", postJsonData: data!)
    NSLog("Sending %@", postRequest.description)
    NKProcessor.process(postRequest,
        success: {response in
            let result = response.parsedJsonObject() as! NSDictionary
            NSLog("Result of simple JSON post as dictionary: \(result)")
        },
        failure: nil, finish: nil)

或者,下载一个文件

    let url = NSURL(string: "http://www.virtualmechanics.com/support/tutorials-spinner/Simple.pdf")
    let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as! String
    let downloadPath = documentsPath.stringByAppendingPathComponent("simple.pdf")

    NKProcessor.startOrResumeDownloadTaskWithURL(url!, downloadPath: downloadPath, delegateQueue: nil)

监视下载完成的事件

    let nc = NSNotificationCenter.defaultCenter()
    nc.addObserver(self, selector: "downloadTaskDidFinish:", name: NKNotificationDownloadTaskDidFinish, object: nil)


    func downloadTaskDidFinish(notification: NSNotification)
    {
        let fdi = notification.object as! NKFileDownloadInfo
    }

在 info 对象中包含完成下载的 url。

在幕后,NKProcessor 维护会话、数据以及所有当前正在下载的任务(文件)的当前状态。如果网络连接离线并再次上线,处理器将自动继续下载文件。

在任何时候,您都可以检查下载文件的进度比率和任务状态。

    let fdi = NKProcessorInfo.shared.infoForUrl(url)

请注意,当您愿意下载太多的文件时,您可以使用自己的 NSOperationQueue。您的队列定义了最大并发下载的规则。

还有一件事,将下载进度比率与您的自定义类连接(例如,从 UIProgressView 派生 MyProgressView)

    if let dfi = NKProcessorInfo.shared.infoForUrl(url!)
    {
        dfi.addObserver(myProgressView, forKeyPath: "downloadRatio", options: NSKeyValueObservingOptions.allZeros, context: nil)
    }

    class MyProgressView: UIProgressView
    {
        override func observeValueForKeyPath(keyPath: String, ofObject object: AnyObject, change: [NSObject : AnyObject], context: UnsafeMutablePointer<Void>)
        {
            let fdi = object as! NKFileDownloadInfo
            dispatch_async(dispatch_get_main_queue()) {
                self.setProgress(fdi.downloadRatio, animated: false)
            }
        }
    }

要求

Swift,最低 iOS 8.0

安装

NKNetworkKit 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中

pod "NKNetworkKit"

作者

Krešimir Prcela,[email protected]

许可

NKNetworkKit 可在 MIT 许可下使用。有关更多信息,请参阅 LICENSE 文件。