Ios managedObject上的setValuesForKeysWithDictionary在swift中给出编译错误
我正在swift中尝试一个基于核心数据的应用程序,我在其中执行以下步骤: 从plist检索数据 遍历检索到的数据 在每次迭代过程中,在managedObjectContext中插入一个managedObject 在从字典插入的managedObject中设置值 以下是我正在使用的代码:Ios managedObject上的setValuesForKeysWithDictionary在swift中给出编译错误,ios,swift,nsmanagedobject,kvc,Ios,Swift,Nsmanagedobject,Kvc,我正在swift中尝试一个基于核心数据的应用程序,我在其中执行以下步骤: 从plist检索数据 遍历检索到的数据 在每次迭代过程中,在managedObjectContext中插入一个managedObject 在从字典插入的managedObject中设置值 以下是我正在使用的代码: let appDelegate = UIApplication.sharedApplication().delegate as AppDelegate let managedObjectCont
let appDelegate = UIApplication.sharedApplication().delegate as AppDelegate
let managedObjectContext = appDelegate.managedObjectContext!
// 1. Retrieve data from plist
var defaultDataPlistPath = NSBundle.mainBundle().pathForResource("DefaultData", ofType: "plist")
var defaultDataArray = NSArray(contentsOfFile: defaultDataPlistPath!)
// 2. Store retrieved data in local db using core data apis
for menuCategoryDict in defaultDataArray {
// storing menu categories
var attributes = menuCategoryDict["attributes"]
var menuCategory : MenuCategories = NSEntityDescription.insertNewObjectForEntityForName("MenuCategories", inManagedObjectContext: managedObjectContext) as MenuCategories
menuCategory.setValuesForKeysWithDictionary(attributes) // this line is giving compilation error :(
}
appDelegate.saveContext()
问题是-由于某些原因,我得到编译错误:“AnyObject?”与此行的“[NSObject:AnyObject]”不同:
menuCategory.setValuesForKeysWithDictionary(attributes)
我不知道,请建议。当您尝试从字典中检索值时,可能是给定键不存在值。因此,在swift中,您不会得到一个值,而是一个包装在选项类型中的值。 错误消息基本上表示属性是包装在选项中的AnyObject,而不是AnyObject类型的值。 换句话说,错误消息意味着您必须在使用该值之前检查该值是否确实存在,否则您的应用程序可能会崩溃。 打开类型的最简单方法是写入属性!在这里 但您应该真正了解期权类型,因为它是Swift中的一个非常基本的概念: