gpt4 book ai didi

swift - 具有核心数据的 Cocoa Pod 在消费应用程序中找不到实体

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

我创建了一个 cocoapod 框架,该框架使用核心数据,我的 pod 规范有:

s.resource_bundles = {
'FrameworkModel' => ['Model/**/*.xcdatamodeld']
}

并且在框架工作空间中作为不同目标的演示应用程序中一切正常,但是当我将它安装为 pod 时,我得到了一个

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'NSFetchRequest could not locate an NSEntityDescription for entity name 'EntityName''

我不太确定该尝试什么,但我确实更改了数据模型文件中的模块名称,但没有任何效果。 (我从框架项目的名称转到“当前产品模块”,然后返回。

我确实在工作区的 pods 项目中看到了数据模型文件。

最佳答案

我的问题是由我创建核心数据堆栈的方式引起的,特别是托管对象模型,我是从一个包的 URL 创建的,该包不作为 pod 消费者存在,所以现在它在定义中,我检查是否一个包可用,因为它在工作区中(对于演示应用程序),或者如果它存在于我的 pod 文件中定义的资源包的名称下,如下所示:

fileprivate lazy var managedObjectModel: NSManagedObjectModel = {

// the moc's model should be accessible via apps in this workspace
// or through the module that cocoapods will create as part of the file's
// resource bundle, as such, we need to look in two different places
// to use the correct bundle at run time
var rawBundle: Bundle? {

if let bundle = Bundle(identifier: "com.thefredelement.Framework") {
return bundle
}

guard
let resourceBundleURL = Bundle(for: type(of: self)).url(forResource: "FrameworkModel", withExtension: "bundle"),
let realBundle = Bundle(url: resourceBundleURL) else {
return nil
}

return realBundle
}

guard let bundle = rawBundle else {
print("Could not get bundle that contains the model ")
return NSManagedObjectModel()
}

guard
let modelURL = bundle.url(forResource: self.model, withExtension: "momd"),
let model = NSManagedObjectModel(contentsOf: modelURL) else {
print("Could not get bundle for managed object model")
return NSManagedObjectModel()
}

return model
}()

关于swift - 具有核心数据的 Cocoa Pod 在消费应用程序中找不到实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41595315/

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