我希望有人能够帮助我理解我在WatchOS 2应用程序中尝试实现NSURLSession时遇到的问题。
无论出于何种原因,我收到错误;
Error Domain=NSCocoaErrorDomain Code=3840 "Garbage at end."
UserInfo={NSDebugDescription=Garbage at end.}
我运行一次应用后,但仅。我第一次在模拟器中运行WatchOS应用程序,我正在下载和解析的数据没有问题。我运行应用程序的第二个+时间,我收到上述错误。
我已经通过我能找到的每个可能的验证器运行我的JSON,并且它没有问题地验证。数据似乎有效,但仅限于第一次发布。如果我看了一段时间(似乎超过10分钟),然后再次在模拟器中运行应用程序,它运行一次,然后我收到错误。
这是我在 InterfaceController.swift 文件中截断的代码;
func getData() {
let myURL = "http://www.myurl.com/sample.json"
let dataURL = NSURL(string: myURL)
let conf = NSURLSessionConfiguration.defaultSessionConfiguration()
let session = NSURLSession(configuration: conf)
dataTask = session.dataTaskWithURL(dataURL!) { data, response, error in
guard error == nil, let data = data else {
return
}
do {
let json = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers) as! NSArray
for item in json {
let name: String? = item["name"] as? String
let email: String? = item["email"] as? String
let nickName: String? = item["nickName"] as? String
let file = Data(
name: name,
email: email,
nickName: nickName)
self.files.append(file)
dispatch_async(dispatch_get_main_queue()) {
self.reloadTable()
}
}
} catch {
print(error)
}
}
dataTask!.resume()
}
任何想法都将不胜感激。谢谢!
答案 0 :(得分:4)
找到临时修复。设置:
sessionConfig.requestCachePolicy = NSURLRequestReloadIgnoringCacheData;
看起来这是由请求缓存中的错误引起的。