(null)和<null>之间的区别

dai*_*dai 2 null json objective-c ios

序列化JSON时,我有两种类型的null:(null)和<null>a的值NSDictionary.

有什么区别以及如何对每一个进行验证?

小智 5

如果这些是打印的描述NSLog(),那么(null)是一个nil或NULL指针,可能是调用objectForKey:未定义键的字典的结果.相反,<null>是一个实例NSNull; 可能是JSON解析器抛出的占位符,用于指示null原始JSON中的值.

您可以测试nil并NULL通过将对象与空指针进行比较(或者只是在期望逻辑表达式的上下文中使用它们):

if ([dict objectForKey:@"NonExistentKey"] != nil) {
    // yay, existent!
}
Run Code Online (Sandbox Code Playgroud)

但是,它NSNull是一个正确的Objective-C类,因此它的实例将通过isEqual:消息进行比较:

if ([[dict objectForKey:@"KeyOfWhichValueIsNull"] isEqual:[NSNull null]]) {
    // `null` in the JSON, but NOT `nil` or `NULL` at runtime!
}
Run Code Online (Sandbox Code Playgroud)