OK, đây là mã của tôi trong lớp học thử nghiệm của tôi:của Apple Mach-O Linker Lỗi sử dụng các lớp Core Data trong OCUnit
- (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;
}
Và đây là những thông báo lỗi khi cố gắng sử dụng phương pháp này trong một phương pháp thử nghiệm:
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)
tôi nghĩ rằng tôi nhập khẩu các lớp cần thiết như thế trong file .h:
#import <CoreData/CoreData.h>
tôi thiếu gì?
Aaaaaaaaah, tôi không biết rằng tôi phải liên kết CoreData hai lần - trước tiên đến mục tiêu xây dựng bình thường VÀ thứ hai cho mục tiêu xây dựng thử nghiệm. Điều đó giải quyết được vấn đề của tôi, nhờ cả hai! – CGee