每当我尝试以下行时,我的应用程序就会崩溃:
[[NSUserDefaults standardUserDefaults] setNilValueForKey:@"my_key"];
出现此错误:'NSInvalidArgumentException', reason: '[<NSUserDefaults 0x7a2423d0> setNilValueForKey]: could not set nil as the value for the key my_key.'
但是当我这样做时它似乎起作用了:
[[NSUserDefaults standardUserDefaults] setObject:nil forKey:@"my_key"];
有人可以解释这两个函数之间的区别吗?
最佳答案
setNilValueForKey:
是 NSKeyValueCoding
协议(protocol)的一部分,不能直接调用,只是被具有自定义 NSKeyValueCoding
实现的类覆盖。然而,setObject:forKey:
是 NSUserDefaults
提供的一种方法,当使用 nil 对象发送时,本质上是从默认值中删除 key (尽管这种行为在 Swift 中可能看起来不同).
关于ios - NSUserDefaults setObject :nil vs. setNilValueForKey,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27615834/