我想存储json数据并在需要ios时使用它

时间:2016-08-04 11:03:35

标签: ios objective-c json

这是代码

{
  "data": [
    {
      "id": "1389378987988776_1745791089014229",
      "created_time": "2016-08-03T21:55:39+0000",
      "picture": "https://external.xx.fbcdn.net/safe_image.php?d=AQBQL02u4kJtLNFs&w=130&h=130&url=fbstaging%3A%2F%2Fgraph.facebook.com%2Fstaging_resources%2FMDExNzQ1NzkwNjg5MDE0MjY5Ojk5ODEyOTY4Ng%3D%3D&cfs=1"
    },
    {
      "id": "1389378987988776_1745301615729843",
      "created_time": "2016-08-02T18:10:53+0000",
      "picture": "https://external.xx.fbcdn.net/safe_image.php?d=AQD7O17OAki29Gus&w=130&h=130&url=http%3A%2F%2Fcdn2.obsnocookie.com%2Fwp-content%2Fuploads%2F2015%2F03%2F13995025_770x433_acf_cropped.jpg&cfs=1"
    }
}

当我尝试打印NSData时,我给我null并且控制转到else块。请纠正我..我想存储json数据,而不是在需要的地方使用它

3 个答案:

答案 0 :(得分:2)

你的代码很好。我认为,您在App Transport安全性方面遇到错误。 当我运行你的代码时,我发现了一个错误说明 -

" App Transport Security阻止了明文HTTP(http://)资源加载,因为它不安全。可以通过您应用的Info.plist文件配置临时例外。"

要解决此问题,请转到项目的info.plist文件,右键单击它并选择像这样的源代码选项 -

enter image description here

然后粘贴

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

标签下。一切都会好的。

答案 1 :(得分:0)

如果原始数据格式无效,NSData将返回nil。 你可以使用 - initWithContentsOfURL:options:error:获取错误信息。

答案 2 :(得分:0)

您可以尝试在NSURL行之后将代码更改为以下内容:

NSError* error = nil;
NSData* data = [NSData dataWithContentsOfURL:stringURL options:NSDataReadingUncached error:&error];
if (error) {
    NSLog(@"%@", [error localizedDescription]);
} else {
    if (urlData)
    {
        // JSON successfully downloaded
        NSLog(@"yes ");
    }
    else
    {
        NSLog(@"not exist");
    }
}