Ios CoreData:警告:无法加载名为';周末阅读';对于实体';读数';。未找到类,改为使用默认NSManagedObject

Ios CoreData:警告:无法加载名为';周末阅读';对于实体';读数';。未找到类,改为使用默认NSManagedObject,ios,objective-c,core-data,static-libraries,resourcebundle,Ios,Objective C,Core Data,Static Libraries,Resourcebundle,好的,在经过数小时的搜索之后,现在是社区帮助的时候了 我有一个静态库,使用这个很棒的工具,我生成了我的静态框架,其中包括通用静态库,我还创建了一个包,其中包括ReadingCoreDataModel.momd,其中包括ReadingCoreDataModel.mom。很好,我将这些提供给我的客户端iOS应用程序,所有构建都正确,并启动与我的框架相关的应用程序,使用捆绑包,我的静态库中有一个singleton WEEDataStore类,由另一个名为Worker的类使用,已选中,NSManaged

好的,在经过数小时的搜索之后,现在是社区帮助的时候了

我有一个静态库,使用这个很棒的工具,我生成了我的静态框架,其中包括通用静态库,我还创建了一个包,其中包括ReadingCoreDataModel.momd,其中包括ReadingCoreDataModel.mom。很好,我将这些提供给我的客户端iOS应用程序,所有构建都正确,并启动与我的框架相关的应用程序,使用捆绑包,我的静态库中有一个singleton WEEDataStore类,由另一个名为Worker的类使用,已选中,NSManagedObjectModel不是零,并且看起来加载正确,NSPersistentStoreCoordinator不是nil,NSManagedObjectContext不是nil

在WEEDataStore中,我有一个save方法,我从静态库中的Worker类调用它

在我的ReadingCoreDataModel.momd中,我创建了一个名为Readers和class WeeReaders的实体

我在工人班做了以下工作

WEEReadings* readingsEntity = [NSEntityDescription insertNewObjectForEntityForName:@"Readings" inManagedObjectContext:[[WEEDataStore sharedInstance] managedContext]];
[readingsEntity appendWithReadingsModel:self.readingsModel];
[[WEEDataStore sharedInstance] save];
结果是得到以下错误

CoreData: warning: Unable to load class named 'WEEReadings' for entity 'Readings'.  Class not found, using default NSManagedObject instead.
2014-12-13 20:11:30.080 TestClient[6854:2487108] -[NSManagedObject appendWithReadingsModel:]: unrecognized selector sent to instance 0x1700ccda0
2014-12-13 20:11:30.084 TestClient[6854:2487108] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSManagedObject appendWithReadingsModel:]: unrecognized selector sent to instance 0x1700ccda0'
我几乎读过所有类似的错误,大多数是Swift的疑难解答,或者是模型的打字错误,其他建议使用与应用程序名称相同的模型名称,我认为我不能这样做,或者这与错误有关

我的静态库中的所有头都是项目头,除了那些公开给客户机并作为公共添加的头。他还试图将它们全部添加为public,但没有任何区别

所有核心数据操作都是内部的

核心数据模型似乎加载正确,但找不到我的类,它肯定包含在框架中的静态库中


在我注册到疯人院之前有什么想法吗?

-ObjC
链接器标志添加到项目中,以强制链接器从库中加载所有类。

我最近遇到了类似的问题
-ObjC
链接器标志,正如在对这个问题的不同回答中提到的,没有帮助。原来我的
NSManagedObject
子类上有
@objc
属性,所以如果您有

@objc(模型)
最终类模型:NSManagedObject{
// ...
}
将其更改为此可能会解决此问题:

最终类模型:NSManagedObject{
// ...
}

将-
ObjC
链接器标志添加到项目中,以强制链接器从库中加载所有类。运行
nmmylib.a
并确保您的类以二进制形式存在。如果这两种方法都不能解决您的问题,我们可以一起去疯人院。您是否使用相同的类和实体名称进行检查?我简直不敢相信我竟然忘记在客户端测试应用程序中添加-ObjC标志。阿德尔,这不重要@安迪回答下面的问题,这样我就可以把它标记为正确!谢谢。把答案贴在下面。