5

OK、これが私のテストクラスのコードです:

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

私は何が欠けていますか?

4

3 に答える 3

15

私の経験では、i386 エラーはライブラリの欠落が原因である傾向があります。ファイルに #import するだけでは十分ではなく、プロジェクト ライブラリにも追加する必要があります。Project Target -> Build Phases -> Link Binary with Libraries に移動し、あなたの場合は Core Data に関連付けられたライブラリを追加します。

于 2012-07-03T14:38:54.123 に答える
8

ライブラリをターゲットにリンクしていない可能性があります。

ここに画像の説明を入力

出典: http://yannickloriot.com/wp-content/uploads/2012/03/Link-CoreData-Framework-To-The-Project.png

于 2012-07-03T14:24:22.567 に答える