Swift 2.0 异步网络请求从网页获取json,并转化为NSArray,遍历得到其中数据.

本文详细介绍了iOS开发中如何进行异步网络请求获取JSON数据,并通过自定义函数将其转换为NSArray对象的过程。重点阐述了在iOS 9.0及以上版本中引入的HTTPS安全协议对HTTP请求的影响,以及如何在Info.plist文件中添加相关配置来支持HTTP请求。同时,文章演示了如何遍历并处理解析后的JSON数据,确保开发者能够有效地利用这些数据进行后续操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

class func parseJSONData(data: AnyObject?) ->NSArray? {//将json转化为NSArray
        do{
            let downloadData=data as? NSData
            let jsonObject = try NSJSONSerialization.JSONObjectWithData(downloadData!, options: NSJSONReadingOptions.MutableContainers) as? NSArray
            return jsonObject
        }catch{
            
        }
        return nil
    }
    
    class func request(urlString urlString: String?,completion: (data: NSArray?) -> Void){//异步网络请求获取json
        if urlString == nil {
            dispatch_async(dispatch_get_main_queue(),{ () -> Void in
                print("urlString 为空")
                completion(data: nil)
            })
        }
        
        let url = NSURL(string: urlString!)//获取json的url
        let request = NSURLRequest(URL: url!)
        let queue = NSOperationQueue()
        NSURLConnection.sendAsynchronousRequest(request, queue: queue) {
            (response, data, error) -> Void in
            let httpResponse = response as? NSHTTPURLResponse
            let code=httpResponse?.statusCode
            if code==200{
                let parseData = self.parseJSONData(data)
                dispatch_async(dispatch_get_main_queue(), { () -> Void in
                    completion(data: parseData)//将json转化为NSArray后返回.
                })
            }else{
                dispatch_async(dispatch_get_main_queue(), { () -> Void in
                    print(error)
                    // 请求出现,则返回nil对象表示
                    completion(data: nil)
                })
            }
        }
    }

由于ios9.0以后引入了http传输安全协议,所以只支持https请求,要使用http请求,需要在info.plist中的添加如下代码:

<key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>
调用request获取到NSArray之后,遍历得到其中的数据.

HttpRequest.request(urlString: url) { (data) -> Void in
            
            if data == nil {
                let alertView = UIAlertView()
                alertView.title = "温馨提示"
                alertView.message = "加载失败"
                alertView.addButtonWithTitle("确定")
                alertView.addButtonWithTitle("取消")
                alertView.show()
            }else {
                let itemArray = data
                for (var i = 0 ; i < itemArray!.count ; i++){
                    NSLog(itemArray![i].valueForKey("keyName")!.description, "debug")}}}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值