起初我试图访问我的应用程序文件夹中的本地文件:

    NSData *data = [NSData dataWithContentsOfFile:
                                      [@"countries.json" stringByExpandingTildeInPath]];

结果始终为 NULL

然后我尝试检查文件是否存在:
    NSString* documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
    NSString* foofile = [documentsPath stringByAppendingPathComponent:@"countries.json"];
    BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:foofile];

它不存在,我使用以下代码访问我的 json 文件:
    NSString *data1 = [[NSBundle mainBundle] pathForResource:@"countries" ofType:@"json"];
    NSData *data2 = [[NSData alloc] initWithContentsOfFile:data1];

它获取文件但是当我尝试解析它时:
    NSDictionary *dict1 =[data2 yajl_JSON];

我收到一个错误:
    [NSConcreteData yajl_JSON]: unrecognized selector sent to instance 0x6838d60

我的问题是下一个 :
  • 是否有机会将 NSData 转换为 NSConcreteData?
  • 我是否使用了正确的方法来访问数据?


  • Api 文档 - http://gabriel.github.com/yajl-objc/

    我的 Xcode 构建阶段的屏幕截图:

    最佳答案

    根据 YAJL 文档,您尝试调用的方法确实存在。

    那只剩下一种选择;您还没有完全链接到 YAJL 框架。

    确保它显示在您的应用程序目标的链接框架/库列表中,就像我的示例中显示的 CFNetwork.framework 一样。



    由于您尝试调用的方法实际上是 NSData 类别 的一部分,因此请确保将 -ObjC 包含在 其他链接器标志 中。

    From Apple's Technical Q&A

    关于iphone - 无法通过 YAJLiOS 解析 json 数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10367537/

    10-09 16:16