iOS字典 setValue 和 setObject的區別
阿新 • • 發佈:2019-01-22
例項說明
NSString name = @"張三";
NSString name1 = nil;
NSMutableDictionary *paramters = [[NSMutableDictionary alloc] init];
[paramters setObject:name forKey:@"userName"]; // 不會奔潰
NSMutableDictionary *paramters1 = [[NSMutableDictionary alloc] init];
[paramters setObject:name1 forKey:@"userName"]; // 奔潰
setObejct的value不能為nil
所以在專案中 傳引數的時候 有時候會因為值為nil而奔潰,相信都有遇到過吧。 如果使用setObject 一定要保證value不能為nil
如果要value為nil 但又不會讓其奔潰怎麼辦,那就要使用setValue
NSMutableDictionary *paramters2 = [[NSMutableDictionary alloc] init];
[paramters setValue:name forKey:@"userName"]; // 不會奔潰
NSMutableDictionary *paramters3 = [[NSMutableDictionary alloc] init];
[paramters setValue:name1 forKey:@"userName" ]; // 不會奔潰
如果使用setValue 當value為nil的時候 會自己呼叫 下面這個方法
- (void)setValue:(id)value forUndefinedKey:(NSString *)key
{
}
小小知識點,但在專案中隨處可見,不建議說哪個好!但自己····因為也是我在專案中遇到的坑··