| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 
 |  
// Configure core data to works with RESTkit
    NSManagedObjectModel *managedObjectModel = [NSManagedObjectModel mergedModelFromBundles:nil];
    RKManagedObjectStore *managedObjectStore = [[RKManagedObjectStore alloc] initWithManagedObjectModel:managedObjectModel];
    NSString *path = [RKApplicationDataDirectory() stringByAppendingPathComponent:BAOBAB_DB_NAME];
    [managedObjectStore addSQLitePersistentStoreAtPath:path fromSeedDatabaseAtPath:nil withConfiguration:nil options:nil error:nil];
    [managedObjectStore createManagedObjectContexts];
    RKObjectManager *manager = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:REST_SERVER_URL]];
    manager.managedObjectStore = managedObjectStore;
    [managedObjectStore.persistentStoreManagedObjectContext setMergePolicy:NSMergeByPropertyObjectTrumpMergePolicy];
    //managedObjectStore.managedObjectCache = [[RKInMemoryManagedObjectCache alloc] initWithManagedObjectContext:managedObjectStore.persistentStoreManagedObjectContext];
 
    // Object Mapping
    RKObjectMapping *userRequestMapping = [RKObjectMapping requestMapping];
    [userRequestMapping addAttributeMappingsFromDictionary:@{
     @"userID" : @"id",
     @"name" : @"name",
     @"phone" : @"phone",
     @"email" : @"email",
     @"city" : @"city",
     @"address" : @"address",
     @"password" : @"password"
     }];
    RKEntityMapping* userResponseMapping = [RKEntityMapping mappingForEntityForName:@"BUser" inManagedObjectStore:manager.managedObjectStore];
    [userResponseMapping addAttributeMappingsFromDictionary:@{
     @"id" : @"userID",
     @"name" : @"name",
     @"address" : @"address",
     @"password" : @"password",
     @"phone" : @"phone",
     @"email" : @"email",
     @"token" : @"token",
     @"is_activated" : @"isActivated",
     @"has_contacts_rights" : @"hasContactsRights",
     @"city" : @"city",
     @"activation_code" : @"activationCode"
     }];
    userResponseMapping.identificationAttributes = @[@"userID"];
    NSIndexSet *statusCodes = RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful); // Anything in 2xx
 
    RKRequestDescriptor *userRequestDescriptor = [RKRequestDescriptor requestDescriptorWithMapping:userRequestMapping objectClass:[BUser class] rootKeyPath:@"user"];
    RKResponseDescriptor *userResponseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:userResponseMapping pathPattern:@"/user" keyPath:nil statusCodes:statusCodes];
    RKResponseDescriptor *userLoadResponseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:userResponseMapping pathPattern:@"/user/:userID" keyPath:nil statusCodes:statusCodes];
 
    // Mapping errors
    NSIndexSet *statusCodesErrors = RKStatusCodeIndexSetForClass(RKStatusCodeClassClientError);
    RKObjectMapping *errorMapping = [RKObjectMapping mappingForClass:[RKErrorMessage class]];
    [errorMapping addPropertyMapping:[RKAttributeMapping attributeMappingFromKeyPath:nil toKeyPath:@"errorMessage"]];
    RKResponseDescriptor *errorDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:errorMapping pathPattern:nil keyPath:@"errors" statusCodes:statusCodesErrors];
 
    [manager addRequestDescriptor:userRequestDescriptor];
    [manager addResponseDescriptor:userResponseDescriptor];
    [manager addResponseDescriptor:userLoadResponseDescriptor];
    [manager addResponseDescriptor:errorDescriptor]; | 
Partager