Типизация в NSMutableDictionary возвращает ноль - PullRequest
0 голосов
/ 30 апреля 2018
NSObject *ob //this object has some value
let scoreMap:NSMutableDictionary? = ob as? NSMutableDictionary // the scoreMap is populated with nil value

Однако, если я изменю вышеприведенное утверждение на

let scoreMap:NSDictionary? = ob as? NSDictionary

Я получаю желаемое значение в ScoreMap. Любые указатели, почему это разница в поведении между Dictionary и NSDictionary?

1 Ответ

0 голосов
/ 30 апреля 2018

NSDictionary и NSMutableDictionary - это два разных класса. NSMutableDictionary наследуется от NSDictionary. Хотя вы можете разыграть NSMutableDictionary до NSDictionary, вы не можете разыграть NSDictionary до NSMutableDictionary.

Если у вас есть NSDictionary и вы хотите получить NSMutableDictionary, вам нужно позвонить mutableCopy на NSDictionary.

Но это Свифт. Не используйте ни один из этих классов вообще. Используйте словарь Swift. Используйте var или let, чтобы указать, является ли словарь изменчивым или нет.

...