NSMutableDictionary 添加元素时,需要注意的点
2020-03-27 本文已影响0人
大成小栈
NSMutableDictionary的用法很简单,其基本用法包括像NSMutableDictionary实例中追加元素、删除元素、修改元素,每个元素都以 {key:value} 的形式存储。
添加元素时,需要注意的点
- KVC中对NSMutableDictionary的扩展方法
查看testDict.setValue(value: Any?, forKey: String) 的代码提示,点进去看它的定义,可以看到它是KVC中提供的对NSMutableDictionary扩展的方法。
extension NSMutableDictionary {
// Send -setObject:forKey: to the receiver, unless the value is nil,
// in which case send -removeObjectForKey:.
open func setValue(_ value: Any?, forKey key: String)
}
他的效果和setObject方法并列,但是,调用时value可以是nil。
image.png- 自有方法
testDict.setObject(anObject: Any, forKey: NSCopying)是定义在NSMutableDictionary这个类中的方法,其中anObject不可以为nil。
其中,第二个参数如果使用String类型会报错“Argument type 'String' does not conform to expected type 'NSCopying'”。String 是一个 Struct,而 class NSString : NSObject, NSCopying, NSMutableCopying, NSSecureCoding 集成了 NSCopying 和 NSSecureCoding;所以报错时将 String 替换成 NSString 即可。
- 简便方法
官方文档中提到,可以这样直接赋值:
可以看出这样追加元素,value也可以为nil。
在处理网络请求参数时,我们经常遇到这样的情况:如果参数值为nil,就不传这个参数,如果不为nil,则正常传递这个参数。那么这时,就可以应用NSMutableDictionary上面这个特点来处理这种场景。