我正在使用IPhone SDK,对于objective-c我是一个新手。现在我正在使用NSUserDefaults来保存和恢复我的iPhone应用程序上的设置。为了保存已创建的类,我将它们编码为字典形式,然后保存NSdictionary。
我的问题是我找不到合理的方法以合理的方式在字典中存储非值(I.E.一个nil的类变量)。更具体地说,我说我有一个“狗”类,它有NSString *尾色。让我们说我试图保存没有尾巴的狗的类实例,因此该实例的尾部颜色为零。拯救狗作为字典的合理方法是什么?它不会让我将nil保存到NSdictionary中。 @“”不好,因为如果我这样做(@“”),@“”是真的。我希望它像假的那样是假的。
我希望我的问题有道理,谢谢你的帮助!
答案 0 :(得分:9)
如果您没有为该密钥存储任何内容,则在致电nil
时将会返回objectForKey:
。如果您在阅读数据时检查nil
,那就足够了吗?或者,您可以使用objectsForKeys:notFoundMarker:
来返回默认值而不是nil
。
因此,在字典中根本不存储您没有的值,并在阅读时使用策略来处理该值。
你可以使用NSNull
,但这感觉不合标准,IMO。
答案 1 :(得分:7)
答案 2 :(得分:1)
您应该使用NSNull来表示集合中的nil对象
答案 3 :(得分:0)
最好的解决方案是不保存您的案例中“零”的值。在读取您的给定键不存在该值时,字典将返回“nil”。