Тип 'String' не соответствует ошибке протокола NSCopying при получении объекта из NSDictionary
Я получаю сообщение об ошибке при попытке извлечь объект из NSDictionary в Swift:
Тип 'String' не соответствует протоколу 'NSCopying'
Я попытался отбросить ключ из String в NSString, но я не решу проблему. Может ли кто-нибудь пролить свет? Вот код:
var excerciseCategoryDictionary = object as NSDictionary
let category = NSEntityDescription.insertNewObjectForEntityForName(NSStringFromClass(ExcerciseCategory.self),
inManagedObjectContext: AppDelegate.sharedInstance().managedObjectContext) as ExcerciseCategory
category.name = excerciseCategoryDictionary["name"]
Ошибка в последней строке.
![enter image description here]()
Ответы
Ответ 1
Swift автоматически преобразует NSDictionary
как Dictionary<NSObject, AnyObject>
. Если вы знаете, что значение, хранящееся в NSDictionary
, является строкой, тогда вам нужно указать String
.
Проблема в вашем случае - это значение, а не ключ, поэтому вам просто нужно сделать следующее:
category.name = excerciseCategoryDictionary["name"] as String
или
category.name = excerciseCategoryDictionary["name"] as String?
в зависимости от того, какой фактический тип объекта вы назначаете значение