era*_*rad 3 key key-value-coding nsuserdefaults ios
你能用:
[[NSUserDefaults standardUserDefaults] setValue:objectID forKey:"objectID"]
设置对象NSUserDefaults,然后使用以下方法检索该对象:
objectType *tempObject = [[NSUserDefaults standardUserDefaults] objectForKey:@"objectID"]
?
所以要澄清,我要问的是,如果我使用setObject,我可以使用valueForKey吗?反之亦然,我可以使用setValue然后使用它来检索它objectForKey吗?
你为什么不能这样做?
如果我正确阅读,setObject/ objectForKey处理NSDictionary和setValue/或valueForKey处理KVC,对吗?
我只是想要更好地了解两者之间的差异.
谢谢.干杯.
从文档中
- (void)setObject:(id)value forKey:(NSString*)defaultName
value参数只能是属性列表对象:NSData,NSString,NSNumber,NSDate,NSArray或NSDictionary.对于NSArray和NSDictionary对象,其内容必须是属性列表对象.看到
这适用于在NSUserDefaultssetObject / objectForKey中添加对象的位置
如果objectID只是上述六种类型中的一种,那么您的示例将起作用.为什么?因为NSUserDefaults获取该对象并将其保存到plist文件中的文件系统中,因此它需要知道如何处理该对象以保存它.如果添加了自定义对象,则NSUserDefaults将无法将其保存在文件系统上
.
虽然setValue / valueForKey使用NSUserDefaults类的属性本身而不是您想要保存的对象
所以要澄清一下,我要问的是,如果我使用setObject,我可以使用valueForKey吗?反之亦然,我可以使用setValue然后使用objectForKey检索它吗?
简答:是的你可以
长答案:NSUserDefaults覆盖valueForKey并setValueForKey表现得像objectForKey和setObjectForKey
但是,如果关键是一样的,在随后NSUserDefaults的冲突可能一切发生的财产......但NSUserDefaults的中的情况下,它没有属性,那么你可以使用它.但在我看来,如果没有记录,你应该特别使用标准方法
| 归档时间: |
|
| 查看次数: |
2395 次 |
| 最近记录: |