Cocoa 具有 Core Data 的 pod 在消费应用中找不到实体
Cocoa pod with Core Data can not find entity in consuming app
我创建了一个 cocoapod 框架,该框架使用核心数据,我的 pod 规格有:
s.resource_bundles = {
'FrameworkModel' => ['Model/**/*.xcdatamodeld']
}
并且在演示应用程序中一切正常,它是框架工作中的不同目标 space,但是当我将它安装为 pod 时,我得到了一个
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'NSFetchRequest could not locate an NSEntityDescription for entity name 'EntityName''
我不太确定该尝试什么,但我确实更改了数据模型文件中的模块名称,但没有任何效果。 (我从框架项目的名称到 'Current Product Module' 并返回。
我确实在工作space的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
}()
我创建了一个 cocoapod 框架,该框架使用核心数据,我的 pod 规格有:
s.resource_bundles = {
'FrameworkModel' => ['Model/**/*.xcdatamodeld']
}
并且在演示应用程序中一切正常,它是框架工作中的不同目标 space,但是当我将它安装为 pod 时,我得到了一个
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'NSFetchRequest could not locate an NSEntityDescription for entity name 'EntityName''
我不太确定该尝试什么,但我确实更改了数据模型文件中的模块名称,但没有任何效果。 (我从框架项目的名称到 'Current Product Module' 并返回。
我确实在工作space的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
}()