Swift核心数据无法在NSManagedObjects上调用指定的初始值设定项

时间:2014-06-16 12:47:04

标签: ios core-data swift nsmanagedobject

我有2节课。我的MainScreenViewController和我的DataFetch。在DataFetch类中,我有一个函数func loadDesserts(){...},我在其中设置了RestKit和CoreData实体/ objectMappings以及其余所有内容。

MainScreenViewController调用该函数。但是当类被赋值为常量时:let dataFetch = DataFetch()会抛出错误:

CoreData: error: Failed to call designated initializer on NSManagedObject class '_TtC9Kogekunst9DataFetch'

我得出结论(虽然不是100%肯定)RestKit不应该为这个问题负责。我想我没有正确初始化NSManagedObject。我试过实现

init(entity entity: NSEntityDescription!,
insertIntoManagedObjectContext context: NSManagedObjectContext!)

但是我没有设法让它工作,因为它给了我同样的错误。我尝试实现它的方式如下:

    var context: NSManagedObjectContext = RKObjectManager.sharedManager().managedObjectStore.mainQueueManagedObjectContext
    var entity = NSEntityDescription.entityForName("Dessert", inManagedObjectContext: context)
    let dataFetch = DataFetch(entity: entity, insertIntoManagedObjectContext: context)
    dataFetch.loadDesserts()

但是这会引发'致命 - 无法解开Optional.none'。再次陷入困境。

有人能指出我正确的方向吗?

克里斯

1 个答案:

答案 0 :(得分:0)

这绝对是一个核心数据问题,而不是RestKit的问题。从它的外观来看,您设置的对象要么不是正确的类型,即DataFetch,要么对象是nil。因为你无法展开Optional.none,所以你必须使用条件设定器:

var dataFetch: DataFetch?
var context: NSManagedObjectContext = RKObjectManager.sharedManager().managedObjectStore.mainQueueManagedObjectContext
var entity = NSEntityDescription.entityForName("Dessert", inManagedObjectContext: context)
if let dataFetchObject = DataFetch(entity: entity, insertIntoManagedObjectContext: context) as? DataFetch {
    dataFetch = dataFetchObject
    dataFetch.loadDesserts()
}

我昨晚也遇到了这个问题,这就解决了我的问题(现在:)。