好的,是时候搜索社区帮助了。
我有一个静态库并使用这个很棒的script我生成包含通用静态库的静态框架,我也创建了一个包含ReadingsCoreDataModel.momd的包,其中包含ReadingsCoreDataModel.mom。好的,我提供给我的客户端iOS应用程序,所有构建正确并启动应用程序纠结到我的框架并使用捆绑包,我在我的静态库中有一个单独的WEEDataStore类,由另一个名为Worker的类使用,检查,NSManagedObjectModel不是nil并且看起来要正确加载,NSPersistentStoreCoordinator不是nil,NSManagedObjectContext不是nil。
在WEEDataStore中,我有一个save方法,我从静态库中的Worker类调用。
在我的ReadingsCoreDataModel.momd中,我创建了一个具有名称读数和类WEEReadings的实体。
我在Worker类
中执行以下操作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进行故障排除,或者使用模型输入错误,其他建议使用与应用程序名称相同的型号名称,我认为我不能这样做或者它是相关的错误。
我的静态库中的所有标题都是Project,除了暴露给客户端的那些标题添加为Public。还尝试将它们全部公开添加,但它没有任何区别。
所有核心数据操作都是内部操作。
似乎Core Data模型已正确加载但无法找到我的类,该类肯定包含在框架中包含的静态库中。
在我登记疯人之前有任何想法吗?
答案 0 :(得分:3)
将-ObjC
链接器标志添加到项目中,以强制链接器加载库中的所有类。
答案 1 :(得分:0)
我最近有一个类似的问题。如对此问题的另一个答案所述,-ObjC
链接器标志没有帮助。原来我的NSManagedObject
子类上有@objc
个属性,所以如果有
@objc(Model)
final class Model: NSManagedObject {
// ...
}
将其更改为此可能会解决问题:
final class Model: NSManagedObject {
// ...
}