0

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

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

  1. 所有球队字典都有一个“局”键,对于大多数球队来说它是零(甚至可以存储零作为数字键吗?也许必须使用 0?)。
  2. 只有需要 innings 值的团队词典才有“innings”键 - 对于所有其他团队词典,此键不存在。

第二个选项对我来说似乎更优雅 - 如果没有价值,我不会存储一个空键。那正确吗?

加分项:我如何使用谓词来提取所有有/没有这个键的团队字典?我最大的努力是

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

但我认为这是期望在每个字典上找到一个“局”键,并搜索一个 nil 值。

4

1 回答 1

1

Cocoa 中的字典不能保存nil值,因此在这种情况下,您必须不设置它或使用占位符值,否则将使用nil.

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

您的谓词照原样很好,但您可以跳过括号。

于 2013-06-14T19:28:50.083 回答