背景:在swift当中使用字典转json时,我使用了如下的方式:
let appendExif = ["key1": "value1", "key1": "value1"] as [AnyHashable : AnyHashable]
let jsonAppendExif = self.getJSONStringFromDictionary(appendExif as NSDictionary)
将自己的字典as
转为 [AnyHashable : AnyHashable]
,之后在使用时发现要传NSDictionary
, 所以用as
将其转为NSDictionary
传入。
结果:调试不奔溃,打包出来再安装,到这里就会奔溃!
之后找了非常久,改一行,打包一次,最终确定代码奔溃地方在appendExif as NSDictionary
或者as [AnyHashable : AnyHashable]
,总之是要避坑!
正确的写法:
let appendExif = ["key1": "value1", "key1": "value1"] as NSDictionary
let jsonAppendExif = self.getJSONStringFromDictionary(appendExif)
字典的原理是哈希表,会通过key的哈希值与数组长度取模求出值的索引,所以key是需要AnyHashable
的,而value并不需要,所以不需要写AnyHashable
。
网友评论