我读到了有关URL加载系统的信息:
无法弄清楚使用什么类以及如何使用它。
答案 0 :(得分:2)
我建议使用像Alamofire这样的第三方框架。本机Swift网络相当复杂,特别是对于初学者来说,因为Swift是类型安全的语言,而JSON对象可以有嵌套等等,只能在以后看到实际上抓取对象。
好消息是Alamofire可以很容易地与CocoaPods一起安装,并且它正在积极开发中。以下是使用Alamofire 4.0版本的Swift 3从名为yourUrl的URL获取JSON对象的请求示例:
Alamofire.request("https://yourUrl").responseJSON { response in
print(response.request) // original URL request
print(response.response) // HTTP URL response
print(response.data) // server data
print(response.result) // result of response serialization
if let json = response.result.value {
print("JSON: \(json)")
// do something with json here
}
}
然后,您可以使用其他第三方框架(如SwiftyJSON)来解析您检索的JSON - 特别是如果它具有复杂的结构。但遗憾的是,Swift 3没有更新,所以我想我们必须等待,看看这是如何实现的。
编辑: SwiftyJSON有一个非官方的Swift 3分支,可以安装cocoapods(它适用于iOS10 / Swift 3):
pod 'SwiftyJSON', git: 'https://github.com/BaiduHiDeviOS/SwiftyJSON.git', branch: 'swift3'
答案 1 :(得分:0)
使用以下功能加载网址。
fun loadURL()->void{
let defaultSession = NSURLSession(configuration: NSURLSessionConfiguration.defaultSessionConfiguration())
var dataTask: NSURLSessionDataTask?
let url = NSURL(string: "URL TO LOAD")//Add url string here
dataTask = defaultSession.dataTaskWithURL(url!) {
data, response, error in
dispatch_async(dispatch_get_main_queue()) {
UIApplication.sharedApplication().networkActivityIndicatorVisible = false
}
if let error = error {
print(error.localizedDescription)
} else if let httpResponse = response as? NSHTTPURLResponse {
if httpResponse.statusCode == 200 {
print(data);
//Process data here..
}
}
}
dataTask?.resume()
}
您可以使用NSJSonSerialization类中的build将NSdata转换为NSDictionary,然后解析Dictionary以提取值。您的解析逻辑将被添加//在此处理数据..代替上述代码库中的此注释。