NSDictionary - 使用nil key或nil值?

时间:2013-06-14 19:10:16

标签: plist nsdictionary nspredicate

我正在使用NSDictionaries数组来存储一些棒球队,每队都有一个'名字'键。当用户决定他有兴趣接收特定团队的分数更新时,我会收集应该发送警报的内容。我想为所选团队存储该号码。

我看到两个选项,我不确定哪个更好:

  1. 所有团队词典都有一个“局”关键字,对于大多数团队来说它是零(甚至可以为数字键存储零?可能必须使用0?)。
  2. 只有需要局数值的团队词典才有“局”键 - 对于所有其他球队词典,此键不存在。
  3. 第二个选项对我来说似乎更优雅 - 如果没有价值,我不会存储空键。是吗?

    奖励积分:如何使用谓词来提取所有没有此密钥的团队词典?我的最大努力是

    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(Innings != nil)"];
    

    但我认为期望在每个字典上找到一个'Innings'键,并搜索零值。

1 个答案:

答案 0 :(得分:1)

Cocoa中的字典无法保存nil值,因此在这种情况下,您必须保留未设置值或使用占位符值来处理否则使用nil的情况。

如果您知道要为字典定义的所有字段,那么您可能需要考虑定义具有声明属性的自定义类来保存它们。在这种情况下,将属性设置为nil没有问题,并且更明确地定义了所有内容。代码中的注释还将帮助未来的程序员理解编写代码时的想法。字典不是那么好。

你的谓词很好,但你可以跳过括号。