我有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'。再次陷入困境。
有人能指出我正确的方向吗?
克里斯
答案 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()
}
我昨晚也遇到了这个问题,这就解决了我的问题(现在:)。