【发布时间】:2014-10-19 17:14:43
【问题描述】:
我正在使用核心数据在 vc1 中保存一个类别,并希望将列表属性添加到 vc2 中的列表中。我的数据模型是许多列表属性中的一类。
我在 vc1 中添加这样的类别:
func createNewCategory() {
var category: NSManagedObject! = NSEntityDescription.insertNewObjectForEntityForName("Category", inManagedObjectContext: self.context) as NSManagedObject
category.setValue(self.categoryTextField.text, forKey: "name")
var error: NSError? = nil
self.context.save(&error)
}
在vc2中设置数据:
func setupCoreData() {
var appDelegate: AppDelegate = (UIApplication.sharedApplication()).delegate as AppDelegate
self.context = appDelegate.managedObjectContext!
var request: NSFetchRequest = NSFetchRequest(entityName: "Category")
if (self.context.executeFetchRequest(request, error: nil)) {
var error: NSError? = nil
self.listData = self.context.executeFetchRequest(request, error: &error)
self.managedObject = self.listData.objectAtIndex(0) as NSManagedObject
}
}
它在最后一行崩溃:self.managedObject = ... 说:
CoreData: error: Failed to call designated initializer on NSManagedObject class 'NSManagedObject'
如果我放置一个断点并打印数组,则托管对象在数组中。怎么了?
【问题讨论】:
-
您正在执行两次获取请求。为什么?
-
我在检查它是否存在,但没有它似乎也能工作......
-
测试只检查 fetch 是否返回一个数组,甚至是一个空数组。
-
好的,很高兴知道。如您所知,我是新手 :) 感谢您的帮助。
标签: ios iphone core-data swift nsmanagedobject