swift练习二

swift练习二,第1张

概述看看swift的几种常见的网络访问数据的方式: 1.NSURL + NSData + json解析        var url = NSURL(string: "http://localhost:18080/jsonserver/getNews")         var data = NSData(contentsOfURL: url!)         var str = NSString(

看看swift的几种常见的网络访问数据的方式:

1.NSURL + NSData + Json解析

var url = NSURL(string: "http://localhost:18080/Jsonserver/getNews")

var data = NSData(contentsOfURL: url!)
var str = Nsstring(data: data!,enCoding: NSUTF8StringEnCoding)
var Json : AnyObject! = NSJsONSerialization.JsONObjectWithData(data!,options: NSJsONReadingOptions.AllowFragments,error: nil)
let news: AnyObject = Json.objectForKey("newsList")!

List = news as! NSMutableArray;

这种方法是同步的网络访问,适合数据量小的服务,如果数据太大则会出现卡死,而且不好进行错误处理和调试

2. NSURL + NSURLRequest + NSURLConnection

func requestUrl(urlString: String){        var url: NSURL = NSURL(string: urlString)        let request: NSURLRequest = NSURLRequest(URL: url)        NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue(), completionHandler:{            (response, data, error) -> VoID in                if error? {                    //Handle Error here                }else{                    //Handle data in NSData type                }            })    }
这种方式,错误和成功的处理都在一个函数中,如果处理的东西比较复杂,则写的代码会比较乱.好处是效率比第三方的好.

3.YYHRequest-Swift库

let request = YYHRequest(url: NSURL(string: "http://www.Google.com/"))request.loaDWithCompletion { response, error in    // request complete!}
这种方式跟上个一样,处理函数都在一起,这个第三方库对上面的方式进行的封装,所以使用更简单.

4.Swifthttp库通过对NSURLSession进行封装

var request = httpTask()request.GET("http://vluxe.io", parameters: nil, success: {(response: AnyObject?) -> VoID in    },failure: {(error: NSError) -> VoID in    })
成功和失败的处理终于分开

5.swift通过桥接oc的AFNetworking库实现(<Projectname>-BrIDging-header.h)

func requestUrl(urlString: String) {        let manager = AFhttpRequestoperationManager()        let params = ["a":1, "b":2]        manager.GET(urlString,            parameters: params,            success: { (operation: AFhttpRequestoperation!,                responSEObject: AnyObject!) in                let responseDict = responSEObject as NSDictionary!            },            failure: { (operation: AFhttpRequestoperation!,                error: NSError!) in                //Handle Error            })    }

关于返回结果的解析以前都用NSJsONSerialization,let news: AnyObject = Json.objectForKey("newsList")!这种方式, *** 作比较复杂,还要可选绑定判断

swift的话推荐用SwiftyJsON,不过我还没有用成功,好像最新的xcode 7不支持try关键字.(response是AnyObject)

let Json = JsONValue(dataFromNetworking)if let username = Json[999999]["wrong_key"]["wrong_name"].string{  //冷静,嘿嘿~ 调用不存在的["wrong_key]也不会crash滴, .string最终能安全的返回一个字符串或`nil`}
总结

以上是内存溢出为你收集整理的swift练习二全部内容,希望文章能够帮你解决swift练习二所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/web/1084137.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存