NSDictionary 具有空值

Posted

技术标签:

【中文标题】NSDictionary 具有空值【英文标题】:NSDictionary having null value 【发布时间】:2013-03-04 10:57:33 【问题描述】:

从 Dictionary 对象中提取数据时遇到问题。字典的计数显示为 1,但它显示的一个值为空。当 Dictionary 对象中没有数据时,我想显示一个 AlertView。我想在计数为“0”时显示 AlertView,但它返回“1”。

我正在使用 JSON 从 WebService 中提取此字典对象。


     "My Data" = null;

使用此代码将“我的数据”值放入字典变量 Datas。

Datas = (NSDictionary *) [details objectForKey:@"My Data"];

if ([Datas count] == 0) 

//code for showing AlertView....


请帮助我在 Dictionary 值为 null 时显示 UIAlertView....

【问题讨论】:

输入NSLog 以获取详细信息和日期...检查它返回的内容... 嗨 Kalyan,你能提供更多代码吗?我不明白你想达到什么目的...... +1 至少尝试了一些东西...为什么诚实的问题总是被否决 【参考方案1】:

NSDictionary 和其他集合不能包含 nil 值。当NSDictionary 必须存储null 时,存储一个特殊值[NSNull null]

比较@"My Data"[NSNull null]的值,判断对应的值是否为null

// Since [NSNull null] is a singleton, you can use == instead of isEqual
if ([details objectForKey:@"My Data"] == [NSNull null]) 
    // Display the alert

【讨论】:

【参考方案2】:

JSON 中的 null 值通常被解析为 NSNull。所以这个条件应该检查​​那个以及 nil:if((details[@"My Data"] == nil) || (details[@"My Data"] == [NSNull null]))

【讨论】:

【参考方案3】:
if ([[details objectForKey:@"My Data"] isEqual:[NSNull null]] || [[details objectForKey:@"My Data"] isEqualToString:@""]) 
     UIAlertView *altTemp = [UIAlertView alloc]initWithTitle:@"Value Null" message:@"Your Message" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
     [altTemp show];
     [altTemp release];

【讨论】:

现在,对吗?? @PratyushaTerli 我只是写了一个给出一些想法的答案,所以请跳过这一点,但是谢谢 :) 为什么要测试 isEqUal:NULL?如果这是真的,它将评估为假并且不适用于 nsnull @CarlVeazey 现在是对的吗?并且没有时间从服务器我们也得到字符串中的 null 值,所以只需将其转换为字符串,它就会工作,所以我只需定义上面的代码,现在它是正确的......你说什么?? @CarlVeazey 现在是正确和正确的,首先我从 api 写了 NULL bcoz 一段时间,服务器可能会直接返回那种类型的值,所以..如果现在正确,那就给我投票吧..

以上是关于NSDictionary 具有空值的主要内容,如果未能解决你的问题,请参考以下文章

从 NSDictionary 转换为 [String:Any?]

将 Plist (NSString) 解析为 NSDictionary

如何从 NSDictionary 中删除空值

带有 JSON 格式字符串的文件,如何将文件内容读入 NSDictionary

如何设置 twilio 通话记录?

如何将 NSDictionary 数据添加到 NSMutableArray?