【问题标题】:Type 'String' does not conform to protocol 'NSCopying' error when getting object from NSDictionary从 NSDictionary 获取对象时,类型“String”不符合协议“NSCopying”错误
【发布时间】:2014-07-13 18:08:24
【问题描述】:

在 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"]

错误发生在最后一行。

【问题讨论】:

  • 亲爱的投票者,请告诉我为什么-1

标签: ios swift


【解决方案1】:

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

你的问题是关于值,而不是关键,所以你只需要按如下方式进行转换:

category.name = excerciseCategoryDictionary["name"] as String

category.name = excerciseCategoryDictionary["name"] as String?

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-04
    相关资源
    最近更新 更多