好的,下面是我测试类中的代码:
- (NSManagedObjectContext*)managedObjectContextWithConcurrencyType:(NSManagedObjectContextConcurrencyType)concurrencyType {
NSManagedObjectModel *mom = [NSManagedObjectModel mergedModelFromBundles:nil];
STAssertNotNil(mom, @"Can not create MOM from main bundle");
NSPersistentStoreCoordinator *psc = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:mom];
STAssertNotNil(psc, @"Can not create persistent store coordinator");
NSPersistentStore *store = [psc addPersistentStoreWithType:NSInMemoryStoreType configuration:nil URL:nil options:nil error:0];
STAssertNotNil(store, @"Can not create In-Memory persistent store");
NSManagedObjectContext *moc = [[NSManagedObjectContext alloc] initWithConcurrencyType:concurrencyType];
moc.persistentStoreCoordinator = psc;
return moc;
}
下面是尝试在测试方法中使用该方法时的失败消息:
Undefined symbols for architecture i386:
"_NSInMemoryStoreType", referenced from:
-[CrosswordItemTests managedObjectContextWithConcurrencyType:] in CrosswordItemTests.o
"_OBJC_CLASS_$_NSEntityDescription", referenced from:
objc-class-ref in CrosswordItemTests.o
"_OBJC_CLASS_$_NSManagedObjectContext", referenced from:
objc-class-ref in CrosswordItemTests.o
"_OBJC_CLASS_$_NSManagedObjectModel", referenced from:
objc-class-ref in CrosswordItemTests.o
"_OBJC_CLASS_$_NSPersistentStoreCoordinator", referenced from:
objc-class-ref in CrosswordItemTests.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
我想我已经在.h文件中导入了所需的类:
#import <CoreData/CoreData.h>
我遗漏了什么?
发布于 2012-07-03 14:38:54
根据我的经验,i386错误往往来自于缺少库。仅仅在文件中导入它们是不够的,你还必须将它们添加到项目库中。进入项目目标、核心构建阶段、->链接二进制文件和库,在您的示例中,添加与-> Data关联的库。
发布于 2012-07-03 14:24:23
发布于 2017-07-11 07:26:54
将“No Common Block”从“Yes”更改为“No”(在“目标”->“构建设置”->“Apple LLVM -代码生成”下)修复了此问题。这解决了我的问题。希望它能对你有所帮助。
https://stackoverflow.com/questions/11312915
复制