繁体   English   中英

无法通过YAJLiOS解析json数据

[英]Can't parse json Data via YAJLiOS

起初我正在尝试访问我的app文件夹中的本地文件:

    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框架完全联系起来。

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

在此输入图像描述

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

在此输入图像描述

来自Apple的技术问答

此标志使链接器加载定义Objective-C类或类别的库中的每个目标文件。 虽然此选项通常会导致更大的可执行文件(由于加载到应用程序中的其他对象代码),但它将允许成功创建包含现有类的类别的有效Objective-C静态库。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM