2017-03-29 2 views
0

Im verwenden RestKit mit RKEntityMapping versuchen, ( HilfeRestKit, RKEntityMapping Probleme mit Antwort-Deskriptoren

NSURL *baseURL = [NSURL URLWithString:@"http://api.mymemory.translated.net"]; 

RKObjectManager *objectManager = [RKObjectManager managerWithBaseURL:baseURL]; 


// Initialize managed object model from bundle 
NSManagedObjectModel *managedObjectModel = [NSManagedObjectModel mergedModelFromBundles:nil]; 
// Initialize managed object store 
RKManagedObjectStore *managedObjectStore = [[RKManagedObjectStore alloc] initWithManagedObjectModel:managedObjectModel]; 
objectManager.managedObjectStore = managedObjectStore; 


// Complete Core Data stack initialization 
[managedObjectStore createPersistentStoreCoordinator]; 
NSString *storePath = [RKApplicationDataDirectory() stringByAppendingPathComponent:@"MyArticlesDB.sqlite"]; 
NSString *seedPath = [[NSBundle mainBundle] pathForResource:@"RKSeedDatabase" ofType:@"sqlite"]; 
NSError *error; 

NSPersistentStore *persistentStore = [managedObjectStore addSQLitePersistentStoreAtPath:storePath fromSeedDatabaseAtPath:seedPath withConfiguration:nil options:nil error:&error]; 
NSAssert(persistentStore, @"Failed to add persistent store with error: %@", error); 

// Create the managed object contexts 
[managedObjectStore createManagedObjectContexts]; 

// Configure a managed object cache to ensure we do not create duplicate objects 
managedObjectStore.managedObjectCache = [[RKInMemoryManagedObjectCache alloc] initWithManagedObjectContext:managedObjectStore.persistentStoreManagedObjectContext]; 

RKEntityMapping *matchMapping = [RKEntityMapping mappingForEntityForName:@"Match" inManagedObjectStore:managedObjectStore]; 
[matchMapping addAttributeMappingsFromDictionary:@{@"id" :@"id", 
                @"segment" :@"segment", 
                @"trnaslation" :@"translation", 
                @"quality"  :@"quality", 
                @"reference"  :@"reference", 
                @"usage-count" :@"usage_count", 
                @"subject"  :@"subject", 
                @"created-by" :@"MateCat", 
                @"last-updated-by" :@"last_updated_by", 
                @"create-date"  :@"create_date", 
                @"last-update-date" :@"last_update_date", 
                @"tm_properties"  :@"tm_properties", 
                @"match"   :@"match"}]; 


RKEntityMapping *translationMapping = [RKEntityMapping mappingForEntityForName:@"Translation" inManagedObjectStore:managedObjectStore]; 
[translationMapping addAttributeMappingsFromDictionary:@{@"responseData.translatedText"  :@"translatedText", 
                 @"responseData.match"    :@"match", 
                 @"responseDetails"     :@"responseDetails", 
                 @"responseStatus"     :@"responseStatus", 
                 @"responseId"      :@"responseId"}]; 









     RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:translationMapping method:RKRequestMethodGET pathPattern:@"/" keyPath:nil statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)]; 
[objectManager addResponseDescriptor:responseDescriptor]; 

json hier: http://api.mymemory.translated.net/get?q=Hello%20World!&langpair=en%7Cru

Fehler:

Fehler Domain = org. restkit.RestKit.ErrorDomain Code = 1001 "Keine Antwortdeskriptoren stimmen mit der geladenen Antwort überein." UserInfo = {NSLocalizedFailureReason = Eine 200 Antwort wurde von der URL 'geladen‘, die am Schlüssel gefunden alle (0) Antwort-Deskriptoren :, NSErrorFailingURLStringKey = http://api.mymemory.translated.net/get?q=Hello%20World!&langpair=en%7Cru, NSErrorFailingURLKey = http://api.mymemory.translated.net/get?q=Hello%20World!&langpair=en%7Cru, NSUnderlyingError = 0x1700562f0 {Fehler Domain = org.restkit.RestKit.ErrorDomain-Code = 1001„Keine mappable Objektdarstellungen anzupassen gescheitert waren Durchsuchte Pfade. "UserInfo = {NSLocalizedDescription = In den gesuchten Schlüsselpfaden wurden keine abbildbaren Objektdarstellungen gefunden., NSLocalizedFailureReason = Die Zuordnungsoperation konnte keine verschachtelten Objektdarstellungen in den gesuchten Schlüsselpfaden finden: Die dem Zuordner eingegebene Repräsentation wurde gefunden um verschachtelte Objektdarstellungen in den folgenden Schlüsselpfaden zu enthalten: Übereinstimmungen, responderId, responseData, responseDetails, responseStatus Dies weist wahrscheinlich darauf hin, dass Sie die Schlüsselpfade für Ihre Zuordnungen falsch konfiguriert haben., keyPath = null, DetaileErrors = ( )}}, keyPath = null, NSLocaliz edDescription = Keine Antwortdeskriptoren stimmen mit der geladenen Antwort überein.}

Antwort

0

Ich habe vergessen, Beziehungen hinzuzufügen. Das hat mir geholfen.

RKRelationshipMapping *res = [RKRelationshipMapping relationshipMappingFromKeyPath:@"responseData" toKeyPath:@"responseData" withMapping:responseMapping]; 

RKRelationshipMapping *matchRelation = [RKRelationshipMapping relationshipMappingFromKeyPath:@"matches" toKeyPath:@"matches" withMapping:matchMapping]; 


[globalMappig addPropertyMapping:matchRelation]; 
[globalMappig addPropertyMapping:responseRelation]; 
Verwandte Themen