NSURLSession - 垃圾数据结束(WatchOS)

时间:2015-08-27 13:06:51

标签: nsurlsession swift2 watch-os-2

我希望有人能够帮助我理解我在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()
}

任何想法都将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:4)

找到临时修复。设置:

sessionConfig.requestCachePolicy = NSURLRequestReloadIgnoringCacheData;

看起来这是由请求缓存中的错误引起的。