2012-12-12 6 views
2

CocoaPods를 통해 RestKit (0.20.0-pre3)을 설치하고 설명서에서 설명한대로 구성했습니다. getObjectsAtPath을 수행하고 RestKit이 매핑을 수행 할 때 내가 얻을 :RestKit 0.20.0-pre3 오류 - [NSManagedObjectContext saveToPersistentStore :] : 인스턴스로 전송 된 인식 할 수없는 선택자

* 인해 캐치되지 않는 예외 'NSInvalidArgumentException'응용 프로그램 종료, 이유는 : '- [NSManagedObjectContext saveToPersistentStore :] : 인식 할 수없는 선택기 예를 0x9eaae40로 전송'

I는 라인 (278)

다음 I가 RestKit 구성에 RKManagedObjectRequestOperation.m 정차 중단 점을 설정할 경우

,
- (void)configureRestKit{ 

    //initialize RestKit 
    LLog(DEBUG_LEVEL, @"init RestKit"); 

    NSString *baseURL; 

    // Log all HTTP traffic with request and response bodies 
    //RKLogConfigureByName("RestKit/Network", RKLogLevelTrace); 

    // Log debugging info about Core Data 
    RKLogConfigureByName("RestKit/CoreData", RKLogLevelTrace); 

    //Loging about the Entity Mapping 
    RKLogConfigureByName("RestKit/ObjectMapping", RKLogLevelTrace) 

    // enable activity indicator 
    [AFNetworkActivityIndicatorManager sharedManager].enabled = YES; 

    if (local) { 
     baseURL = @"http://xyz.net"; 

    } else { 
     baseURL = @"http://XYZ.net"; 
    } 


    [RKMIMETypeSerialization registerClass:[RKNSJSONSerialization class] forMIMEType:@"application/json"]; 

    _objectManager = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:baseURL]]; 

    _managedObjectModel = [NSManagedObjectModel mergedModelFromBundles:nil]; 
    _managedObjectStore = [[RKManagedObjectStore alloc] initWithManagedObjectModel:_managedObjectModel]; 

    NSString *path = [RKApplicationDataDirectory() stringByAppendingPathComponent:@"XYZ.sqlite"]; 
    //LLog(DEBUG_MODE,@"The object store: %@", _objectStore.description); 

    [_managedObjectStore addSQLitePersistentStoreAtPath:path fromSeedDatabaseAtPath:nil withConfiguration:nil options:nil error:nil]; 

    [_managedObjectStore createManagedObjectContexts]; 
    [_managedObjectStore createPersistentStoreCoordinator]; 

    _managedObjectContext = _managedObjectStore.persistentStoreManagedObjectContext; 
    _persistentStoreCoordinator = _managedObjectStore.persistentStoreCoordinator; 
    _managedObjectModel = _managedObjectStore.managedObjectModel; 

    _objectManager.managedObjectStore = _managedObjectStore; 

    // 2012-06-13T00:00:00+01:00 
    NSDateFormatter *dateFormatter = [NSDateFormatter new]; 
    [dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'+01:00'"]; 
    dateFormatter.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"UTC"]; 
    dateFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]; 

    // Set it Globally 
    [RKObjectMapping setPreferredDateFormatter:dateFormatter]; 

    LLog(DEBUG_LEVEL, @"DateFormater Test: %@", [dateFormatter stringFromDate:[NSDate date]]); 

    // Add Entity Mapping 
    RKEntityMapping *experienceMapping = [RKEntityMapping mappingForEntityForName:@"Experience" inManagedObjectStore:_managedObjectStore]; 
    [experienceMapping addAttributeMappingsFromArray:@[@"experienceid", @"city", @"descr", @"lat", @"lng", @"number", @"price", @"street"]]; 
    experienceMapping.identificationAttributes = @[@"experienceid"]; 


    NSIndexSet *statusCodes = RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful); // Anything in 2xx 
    RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:experienceMapping pathPattern:@"/test.json" keyPath:@"experience" statusCodes:statusCodes]; 
    [_objectManager addResponseDescriptor:responseDescriptor]; 




    // ###### ONLY FOR TEST REASONS ###### 

    NSManagedObject *test = [NSEntityDescription 
             insertNewObjectForEntityForName:@"Experience" 
             inManagedObjectContext:_managedObjectContext]; 
    [test setValue:[NSNumber numberWithInt:1] forKey:@"experienceid"]; 
    [test setValue:@"Testville" forKey:@"city"]; 

    NSError *error; 
    if (![_managedObjectContext save:&error]) { 
     NSLog(@"Whoops, couldn't save: %@", [error localizedDescription]); 
    } 

    [_objectManager getObjectsAtPath:@"/test.json" parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) { 
    // Handled with articleDescriptor 
     LLog(DEBUG_LEVEL, @"Test"); 
    } failure:^(RKObjectRequestOperation *operation, NSError *error) { 
    // Transport error or server error handled by errorDescriptor 
    }]; 


} 

도움 주셔서 감사합니다!

+0

단서가없는 사람이 있습니까? – Patrick

답변

0

이것은 링커 플래그가 제대로 설정되지 않았 음을 나타냅니다. 범주 메서드를로드하려면 -ObjC 링커 플래그가 필요합니다. 타겟에서 Linker Flags를 재정의 했습니까? 대상 수준에서 추가 구성이있는 경우 적어도 $(inherited)을 포함해야합니다. Xcode에서 설정을 볼 때 -ObjC이 링커 플래그 내에 표시되어야합니다.

관련 문제