那么使用标准库中的Swift方法与Swift 2.0中的REST API进行通信的最佳实践是什么?
任何人都可以为以下场景提供Swift 2.0代码吗?
>从服务中获取JsON数据
>解析JsON(因此可在Swift中使用)
>使用JsON编码数据发送POST请求
请提供没有框架的解决方案.希望它可以帮助所有其他人尝试从Web上获取教程以使用Swift 2.0.
解决方法 我也是初学者,我不能说我所做的是最佳实践,但这里是我如何处理使用NSURLSession和闭包的GET请求.首先,我定义了一个NetworkOperation类,它将处理NSURLSession.它具有以下属性:
lazy var config: NSURLSessionConfiguration = NSURLSessionConfiguration.defaultSessionConfiguration()lazy var session: NSURLSession = NSURLSession(configuration: self.config)let queryURL: NSURL
在初始化程序中,我设置了queryURL.配置和会话变量是懒惰的,因为我希望它们仅在使用我的网络 *** 作时才被初始化.
然后我有一个执行GET请求并检索JsON的方法.此方法接受闭包作为参数.这个闭包将由调用者提供,并允许我将dataTask响应捕获到调用上下文中.
func downloadJsONFromURl(completion: ([String:AnyObject]?) -> ()) { let request = NSURLRequest(URL: queryURL) let dataTask = session.dataTaskWithRequest(request) { (let data: NSData?,let response: NSURLResponse?,let error: NSError?) -> VoID in // 1: Check http Response for successful GET request guard let httpResponse = response as? NShttpURLResponse,receivedData = data else { print("error: not a valID http response") return } switch (httpResponse.statusCode) { case 200: // 2: Create JsON object with data do { let JsonDictionary = try NSJsONSerialization.JsONObjectWithData(receivedData,options: NSJsONReadingOptions.AllowFragments) as? [String:AnyObject] // 3: Pass the Json back to the completion handler completion(JsonDictionary) } catch { print("error parsing Json data") } default: print("GET request got response \(httpResponse.statusCode)") } } dataTask.resume()}
这个例子非常简单并且不处理错误,但你可以看到我如何将JsON解析为[String:AnyObject]到try catch块中.
之后,我将字典发回到名为completion的闭包中,该闭包将对JsON执行必要的验证,然后将其转换为Swift对象.
在该闭包中,我使用可选绑定来安全地构建我的对象.
例如,假设我正在检索一本书,而JsON看起来像这样:
{标题:“一些书”,作者:“J.Doe”}
if let Title = Json["author"] as? String,author = Json["author"] as? String { let book = Book(Title: Title,author: author) serviceCompletion(book)}
因为我喜欢闭包,所以我将转换后的JsON发送到提供给服务的其他闭包中.您可以在我的github上看到完整的示例.它来自Treehouse教程.
希望这会有帮助.
总结以上是内存溢出为你收集整理的ios – Swift 2.0:使用JSON与REST API进行通信的最佳实践全部内容,希望文章能够帮你解决ios – Swift 2.0:使用JSON与REST API进行通信的最佳实践所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)