在 OCUnit 中使用核心数据类时出现 Apple Mach-O 链接器错误

2023-11-23

好的,这是我的测试类中的代码:

 - (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>

我缺少什么?


根据我的经验,i386 错误往往来自于缺少库。仅将它们#import到您的文件中是不够的,您还必须将它们添加到项目库中。进入项目目标 -> 构建阶段 -> 将二进制文件与库链接,并根据您的情况添加与核心数据关联的库。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 OCUnit 中使用核心数据类时出现 Apple Mach-O 链接器错误 的相关文章

随机推荐