iOS, Swift
Swift ) NSMutableDictionary vs NSDictionary - EEYatHo iOS
EEYatHo
2021. 8. 11. 17:31
반응형
차이점
NSMutableDictionary 수정, 삭제, 삽입 가능.
NSDictionary 수정, 삭제, 삽입 불가능.
그런데 막상 코드를 보면, NSDictionary 에
.setValue(<value: Any?>, forKey: <String>) 함수가 존재한다.
그래서 실제로 해보았는데, 오류가 발생한다.
실행 코드.
let d: NSDictionary = NSDictionary(object: "object", forKey: "key" as NSCopying)
d.setValue("value", forKey: "key2")
오류.
Thread 1: "[<__NSSingleEntryDictionaryI 0x282f2b660> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key key2."
반면, NSMutableDictionary 는 setValue 잘된다.
실행 코드.
let md: NSMutableDictionary = NSMutableDictionary(object: "object", forKey: "key" as NSCopying)
md.setValue("value", forKey: "key2")
잘됨.ㅎ
NSDictionary to NSMutableDictionary
let d: NSDictionary = NSDictionary(object: "object", forKey: "key" as NSCopying)
let md: NSMutableDictionary = d.mutableCopy() as! NSMutableDictionary
NSArray도 마찬가지
NSMutableArray이 수정 가능.
NSArray는 수정 불가.
사내 프로젝트에서
didFinishLaunchingWithOptions 의 launchOptions 에서
값 추출할 때 쓰고 있어서, 한번 정리했슴당~