EEYatHo 앱 깎는 이야기

Swift ) NSMutableDictionary vs NSDictionary - EEYatHo iOS 본문

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 에서

값 추출할 때 쓰고 있어서, 한번 정리했슴당~

Comments