Json NSURLSession.dataTaskWithRequest不工作
我试图创建一个泛型类,该类将从URL读取JSON数据,并使用从JSON数据创建的NSDictionary执行回调。 我已经创建了一个静态类来完成这个功能,但是在dataTaskWithRequest之后它似乎不起作用 [我的代码]Json NSURLSession.dataTaskWithRequest不工作,json,swift,Json,Swift,我试图创建一个泛型类,该类将从URL读取JSON数据,并使用从JSON数据创建的NSDictionary执行回调。 我已经创建了一个静态类来完成这个功能,但是在dataTaskWithRequest之后它似乎不起作用 [我的代码] import Foundation class LoadJsonFromNetwork { static func LoadJsonFromNetwork(url:NSURL, completion:((NSDictionary) -> ())) {
import Foundation
class LoadJsonFromNetwork {
static func LoadJsonFromNetwork(url:NSURL, completion:((NSDictionary) -> ())) {
print("Creating request")
let urlRequest = NSMutableURLRequest(URL: url, cachePolicy: .ReloadIgnoringLocalAndRemoteCacheData, timeoutInterval: 15.0)
print("Creating session")
let session = NSURLSession.sharedSession()
print("Send request")
session.dataTaskWithRequest(urlRequest) {
(data: NSData?, response: NSURLResponse?, error: NSError?) in
print("Checking error and nil data")
if (error == nil && data != nil) {
print("Request json dictionary from nsdata")
if let result = self.NSDataToJson(data!) {
print("Dispatching to main queue")
dispatch_async(dispatch_get_main_queue()) {
print("Calling callback")
completion(result)
}
}
} else {
print(error!.description)
}
}
}
private static func NSDataToJson(data:NSData) -> NSDictionary? {
do {
print("Serializing JSON")
let json: AnyObject? = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.AllowFragments)
print("Cretaing NSDictionary")
let result = json as? NSDictionary
print("Returning result")
return result
} catch {
return nil
}
}
}
[我在控制台中的结果]
Creating request
Creating session
Send request
您忘记了继续执行任务。请查找您的以下编辑代码
static func LoadJsonFromNetwork(url:NSURL, completion:((NSDictionary) -> ())) {
print("Creating request")
let urlRequest = NSMutableURLRequest(URL: url, cachePolicy: .ReloadIgnoringLocalAndRemoteCacheData, timeoutInterval: 15.0)
print("Creating session")
let session = NSURLSession.sharedSession()
print("Send request")
let task = session.dataTaskWithRequest(urlRequest) {
(data: NSData?, response: NSURLResponse?, error: NSError?) in
print("Checking error and nil data")
if (error == nil && data != nil) {
print("Request json dictionary from nsdata")
if let result = self.NSDataToJson(data!) {
print("Dispatching to main queue")
dispatch_async(dispatch_get_main_queue()) {
print("Calling callback")
completion(result)
}
}
} else {
print(error!.description)
}
}
task.resume() //you need to call this
}
您忘记了继续执行任务。请查找您的以下编辑代码
static func LoadJsonFromNetwork(url:NSURL, completion:((NSDictionary) -> ())) {
print("Creating request")
let urlRequest = NSMutableURLRequest(URL: url, cachePolicy: .ReloadIgnoringLocalAndRemoteCacheData, timeoutInterval: 15.0)
print("Creating session")
let session = NSURLSession.sharedSession()
print("Send request")
let task = session.dataTaskWithRequest(urlRequest) {
(data: NSData?, response: NSURLResponse?, error: NSError?) in
print("Checking error and nil data")
if (error == nil && data != nil) {
print("Request json dictionary from nsdata")
if let result = self.NSDataToJson(data!) {
print("Dispatching to main queue")
dispatch_async(dispatch_get_main_queue()) {
print("Calling callback")
completion(result)
}
}
} else {
print(error!.description)
}
}
task.resume() //you need to call this
}
您好,如果(error==nil&&data!=nil){print(“从nsdata请求json字典”),如果let result=self.NSDataToJson(data!){print(“分派到主队列”)分派异步(分派获取主队列()){print,我的代码就无法运行来打印(“检查错误和无数据”)(“调用回调”)完成(结果)}}其他{print(error!.description)}//请帮助我了解发生这种情况的原因。Thanks@AmyNguyen您使用的是
nsursession
?是的,我使用的是Xcode 7上的nsursession,带有Swift 2和iOS 9.3Hi,我的代码无法运行打印(“检查错误和零数据”)如果(错误==nil&&data!=nil){print(“从nsdata请求json字典”)如果让result=self.NSDataToJson(数据!){print(“分派到主队列”)分派异步(分派获取主队列()){print(“调用回调”)完成(结果)}}其他{print(error!.description)}//请帮助我了解发生这种情况的原因。Thanks@AmyNguyen您使用的是nsursession
?是的,我使用的是带Swift 2和iOS 9.3的Xcode 7上的nsursession