从NSDictionary获取对象时,类型'String'不符合协议'NSCopying'错误

Raf*_*fAl 10 ios swift

尝试从Swift中的NSDictionary中提取对象时出错:

类型'字符串'不符合协议'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"]
Run Code Online (Sandbox Code Playgroud)

错误发生在最后一行.

在此输入图像描述

Ant*_*nio 18

Swift自动转换NSDictionaryDictionary<NSObject, AnyObject>.如果您知道存储在a中的值NSDictionary是一个字符串,那么您必须转换为String.

你的案例中的问题是关于价值而不是关键,所以你只需要按如下方式进行投射:

category.name = excerciseCategoryDictionary["name"] as String
Run Code Online (Sandbox Code Playgroud)

要么

category.name = excerciseCategoryDictionary["name"] as String?
Run Code Online (Sandbox Code Playgroud)

取决于您分配值的对象的实际类型