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:
方法