相关疑难解决方法(0)

TouchJSON,处理NSNull

嗨,我正在使用TouchJSON反序列化一些JSON.我过去一直在使用它,在那些情况下我手动处理了NSNull的出现.我认为作者也必须处理这个,所以我再这样做只会是开销.然后我在文档中找到了这个:

避免输出中的NSNull值.

NSData *theJSONData = /* some JSON data */
CJSONDeserializer *theDeserializer = [CJSONDeserializer deserializer];
theDeserializer.nullObject = NULL;
NSError *theError = nil;
id theObject = [theDeserializer deserialize:theJSONData error:&theError];}
Run Code Online (Sandbox Code Playgroud)

我理解它的方式是类的用户可以将C样式的空指针传递给反序列化器,当它遇到NSNull时,它将插入传递给它的值(NULL).所以稍后当我使用这些值时,我不会得到NSNull,而是NULL.

这看起来很奇怪,返回值是一个只能包含Objects的NSDictionary,不应该默认值为'nil'吗?

如果是NULL,我可以检查这样的值吗?

if([jsonDataDict objectForKey:someKey] == NULL)
Run Code Online (Sandbox Code Playgroud)

能够做到这一点似乎更符合逻辑:

if(![jsonDataDict objectForKey:someKey])
Run Code Online (Sandbox Code Playgroud)

更不用说允许传递nil但传递NULL导致崩溃的所有情况.

或者我可以将'nil'传递给解串器吗?

这很大程度上源于我仍在努力与nil,NULL,[NSNULL null],也许我没有看到使用nil的潜在警告.

null objective-c touchjson

16
推荐指数
2
解决办法
1万
查看次数

标签 统计

null ×1

objective-c ×1

touchjson ×1