【问题标题】:watchOS 2 on device doesn't read NSData设备上的 watchOS 2 不读取 NSData
【发布时间】:2015-09-24 19:09:47
【问题描述】:

在我的 watchOS 2 Apple Watch WatchKit 扩展中,我使用 NSURL 和 NSData 请求 URL 并检索它发送的 JSON。但是,这仅在模拟器中有效。起初我遇到了一个问题,因为我使用了一个不受信任的地址(一个内部 IP 地址),但是在向 Info.plist 添加了一些键和值之后,这个问题得到了解决。为了完全确定 URL 是可信的,我使用了来自 GitHub API (https://api.github.com/users/mralexgray/repos) 的开放 URL。我使用以下代码来检索响应:

var responseData: NSData? = nil
if let url = NSURL(string: "https://api.github.com/users/mralexgray/repos") {
    if let data = NSData(contentsOfURL: url){
        responseData = data
    }
}

在我的 watchOS 2 模拟器上,responseData 已正确填充,但在我的 Apple Watch 设备上,它看起来像第 3 行,并且它的主体刚刚被跳过。这是一个问题、功能还是我做错了什么?

【问题讨论】:

    标签: swift apple-watch watchos-2


    【解决方案1】:

    这听起来像是 NSData 方法中的一个错误,contentsOfURL:option:error: 说文件无法打开。

    NSURLSession 工作正常。

    NSURL * url = [NSURL URLWithString:@"https://api.github.com/users/mralexgray/repos"];
    
    NSURLSessionDataTask *downloadTask = [[NSURLSession sharedSession]
                                          dataTaskWithURL:url completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
                                              NSLog(@"data size %ld", (unsigned long)data.length);
                                          }];
    
    [downloadTask resume];
    

    【讨论】:

    • 谢谢,这证实了我之前的发现。
    猜你喜欢
    • 2016-07-04
    • 2015-12-14
    • 1970-01-01
    • 2022-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-01
    • 1970-01-01
    相关资源
    最近更新 更多