2012-07-03 17 views
5

ठीक 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; 
} 

और यहाँ जब एक परीक्षा पद्धति में विधि का उपयोग करने की कोशिश कर विफलता संदेश है:

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) 

मैंने सोचा कि मैं ज फाइल में इस तरह की जरूरत कक्षाएं आयातित:

#import <CoreData/CoreData.h> 

मैं क्या याद आ रही है?

उत्तर

15

मेरे अनुभव में i386 त्रुटियों लापता पुस्तकालयों से आते जाते हैं। यह सिर्फ आपकी फाइल में उन्हें आयात करने के लिए पर्याप्त नहीं है, आपको उन्हें परियोजना पुस्तकालयों में भी जोड़ना होगा। परियोजना लक्ष्य में जाएं -> चरणों का निर्माण करें -> पुस्तकालयों के साथ लिंक बाइनरी और अपने मामले में कोर डेटा से जुड़े पुस्तकालयों को जोड़ें।

+3

आआआआ, मुझे नहीं पता था कि मुझे कोरडाटा को दो बार जोड़ना है - पहले सामान्य निर्माण लक्ष्य और परीक्षण निर्माण लक्ष्य के लिए दूसरा। यह मेरे मुद्दों को हल करता है, दोनों के लिए धन्यवाद! – CGee

0

हां से नहीं (लक्ष्य के तहत-> सेटिंग सेटिंग्स-> ऐप्पल एलएलवीएम - कोड जनरेशन) के तहत 'कोई सामान्य ब्लॉक' बदलना समस्या को हल करता है। यह मेरी समस्या तय है। उम्मीद है कि यह आपकी मदद करेगा।

संबंधित मुद्दे