RestKit Core Data mapping one to many

I am using RestKit to map the following JSON to core data.

This is my model: enter image description here

this is my methods:

 RKEntityMapping *userMapping = [RKEntityMapping mappingForEntityForName:NSStringFromClass([User class]) inManagedObjectStore:managedObjectStore];
    userMapping.identificationAttributes = @[@"id"];
    [userMapping addAttributeMappingsFromDictionary:@{
                                                         @"birthday":@"birthday",
                                                         @"email":@"email",
                                                         @"facebook_token":@"facebook_token",
                                                         @"first_name":@"first_name",
                                                         @"gender":@"gender",
                                                         @"interested_in":@"interested_in",
                                                         @"last_name":@"last_name",
                                                         @"password":@"password",
                                                         @"m8_status":@"m8_status",
                                                         @"status":@"status",
                                                         @"languages": @"languages",
                                                         @"hometown":@"hometown",
                                                         @"location":@"location",
                                                         @"avatar_url":@"avatar_url",
                                                         @"mood":@"mood"
                                                         }];
 RKEntityMapping *findUserMapping = [RKEntityMapping mappingForEntityForName:NSStringFromClass([FindUser class]) inManagedObjectStore:managedObjectStore];
    findUserMapping.identificationAttributes = @[@"id"];
    [findUserMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"users" toKeyPath:@"users" withMapping:userMapping]];

  [manager addResponseDescriptorsFromArray:@[



                                               [RKResponseDescriptor responseDescriptorWithMapping:findUserMapping
                                                                                       pathPattern:@"/v1/users"
                                                                                           keyPath:nil                                                                                      statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)]

                                               ]];

This is getting objects from example JSON:

{
"users": [
{
"avatar_url": null,
"birthday": "04/11/1984",
"email": "[email protected]", "first_name": "Antonina",
"gender": "female",
"hometown": null,
"id": "5264ee384d61632c4b2f0000",
"interested_in": [
"male",
"female" ],
"languages": [], "last_name": "Duminskaya", "location": null, "m8_status": null,
"mood": null,
"status": null
} ]
}

here:

 [objectManager getObjectsAtPath:@"/v1/users" parameters:@{@"session_id":session.id} success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
           FindUser *findUsers = [[self.fetchedFindUsersResultsController fetchedObjects] lastObject];
            NSLog(@"%@", findUsers.users);


       } failure:^(RKObjectRequestOperation *operation, NSError *error) {

       }];

I have message in log:

Relationship 'users' fault on managed object (0x8e964a0) <FindUser: 0x8e964a0> (entity: FindUser; id: 0x8da0790 <x-coredata://083BB731-FDD7-4A35-A174-724F50862A02/FindUser/p1> ; data: {
    id = nil;
    users = "<relationship fault: 0x8deb260 'users'>";
})

And In mappingResults I have all results about json

Upvotes: 1

Views: 1051

Answers (1)

serrrgi
serrrgi

Reputation: 634

Core Data is representing the relationship initially as fault saving memory by not loading all the object graph at once.

https://developer.apple.com/library/ios/documentation/cocoa/conceptual/CoreData/Articles/cdFaultingUniquing.html

Also, do not use the reserved word 'id' as the Restkit identification attribute for your managed objects. Try using findUserId and userId and update your mappings accordingly.

Upvotes: 2

Related Questions