Swift   发布时间:2022-03-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了swift练习二大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

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

看看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.@H_487_34@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 @H_487_34@manager = AFhttprequestOperationManager()

        let params = ["a":1, "b":2]

        @H_487_34@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练习二所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。