gpt4 book ai didi

ios - Swift 核心数据无法在 NSManged ObjectClass 上调用指定的初始值设定项

转载 作者:搜寻专家 更新时间:2023-11-01 05:43:22 24 4
gpt4 key购买 nike

我有 2 个类(class)。我的 MainScreenViewController 和我的 DataFetch。在 DataFetch 类中,我有一个函数 func loadDesserts(){...}我在其中设置我的 RestKit 和 CoreData 实体/对象映射以及所有其他内容。

该函数是从 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”。于是又卡住了。

有人可以指出我该做什么的正确方向吗?

克里斯

最佳答案

这绝对是 Core Data 的问题,而不是 RestKit 的问题。从外观上看,您设置的对象不是正确的类型,即 DataFetch,或者对象是 nil。因为你不能打开一个Optional.none,所以你必须使用一个条件 setter :

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()
}

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

关于ios - Swift 核心数据无法在 NSManged ObjectClass 上调用指定的初始值设定项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24244102/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com