Тип '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?

в зависимости от того, какой фактический тип объекта вы назначаете значение