setObject:forKey:
宣告
- (void)setObject:(ObjectType)anObject forKey:(id<NSCopying>)aKey;
複製程式碼
引數
- anObject
anObject
是aKey
的值,dictionary強引用該物件。如果anObject是nil,會引發NSInvalidArgumentException的異常,如果你想傳一個空值在dictionary中,可以使用NSNull代表空值
使用NSNull代表空值
NSNull *nilValue = [NSNull null];
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
[dict setObject:nilValue forKey:@"nilvalue"];
複製程式碼
- aKey
aKey,會引發NSInvalidArgumentException的異常
setObject:forKeyedSubscript:
宣告
- (void)setObject:(ObjectType)obj forKeyedSubscript:(id<NSCopying>)key;
複製程式碼
引數
- object
object
是aKey
的值,dictionary強引用該物件。如果object為nil,dictionary會將aKey的關聯的object移除
object為nil,dictionary會將aKey的關聯的object移除
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
dict[@"name"] = @"jack"; //@{@"name":@"jack"}
dict[@"name"] = nil; //@{}
複製程式碼
- aKey
aKey,會引發NSInvalidArgumentException的異常
說明
該方法和setObject:forKey:
方法實現同樣的功能。你不需要直接代用該方法。當你使用下標賦值的時候,會呼叫該方法。
id value = @"someValue";
mutableDictionary[@"someKey"] = value; //等效於[mutableDictionary setObject:value forKeyedSubscript:@"someKey"];
複製程式碼
總結
- 當呼叫
setObject:forKey:
傳入nil的時候會崩潰,使用setObject:forKeyedSubscript:
則不會 - 如果呼叫
setObject:forKey:
需要傳遞空值,可以使用NSNull - 使用下標賦值等效於呼叫
setObject:forKeyedSubscript:
方法