1. 程式人生 > >iOS字典 setValue 和 setObject的區別

iOS字典 setValue 和 setObject的區別

例項說明

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 { } 小小知識點,但在專案中隨處可見,不建議說哪個好!但自己····因為也是我在專案中遇到的坑··