gpt4 book ai didi

core-data - CoreData警告: Multiple NSEntityDescriptions claim the NSManagedObject subclass

转载 作者:行者123 更新时间:2023-12-02 22:54:31 29 4
gpt4 key购买 nike

我突然在 iOS12/XCode 9 上收到一堆警告。为什么有多个 ManagedObjectModel ?该应用程序只有一个 *.xcdatamodeld 文件,但模型中有多个版本。

这是 iOS12 Coredata 的新功能吗?我可以采取什么措施来防止此警告,还是应该忽略它?

2018-09-18 11:45:34.487073+1000 xxxxxxxxx[4422:1419983] [error] warning:     'Stats' (0x2812f1550) from NSManagedObjectModel (0x2806ff480) claims 'Stats'.
CoreData: warning: 'Stats' (0x2812f1550) from NSManagedObjectModel (0x2806ff480) claims 'Stats'.
2018-09-18 11:45:34.487084+1000 xxxxxxxxx[4422:1419983] [error] warning: 'Stats' (0x2812f3bd0) from NSManagedObjectModel (0x2806b18b0) claims 'Stats'.
CoreData: warning: 'Stats' (0x2812f3bd0) from NSManagedObjectModel (0x2806b18b0) claims 'Stats'.

最佳答案

我刚刚解决了为持久容器使用计算属性时出现的相同错误。因此,每次应用程序访问持久容器/存储时,都会从磁盘创建新的数据模型实例。

将持久容器更改为惰性存储属性后,问题就消失了。

[更新]

目前,我对核心数据堆栈使用一个单独的类,其中使用如下所示的单例:

class DataCtrl : NSObject {

static shared = DateCtrl()
var container: NSPersistentContainer?

private override init() {
container = NSPersistentContainer(name: "dataModelName")
}

func loadStore(completionHandler: @escaping () -> ()) {
self.container?.loadPersisentStores() { desc, err in ...
completionHandler
}
}
}

然后我可以轻松地在 tableViewController 扩展中使用计算属性:

var container : persistentContainer { return DateCtrl.shared.container }

当然,您需要调用AppDelegate didFinishLaunchingWithOptions block 中的func loadStore来首先加载持久存储,其中使用completionHandler中的DispatchGroup()来控制加载第一个 View Controller 的数据模型。

关于core-data - CoreData警告: Multiple NSEntityDescriptions claim the NSManagedObject subclass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52377909/

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