Я работаю с JSON ниже.Внешняя метка отсутствует.
[{
"id":1,
"updated_at":"2012-01-13T17:13:47Z",
"created_at":"2012-01-13T17:13:47Z",
"name":"dave"},
{
"id":2,
"updated_at":"2012-01-13T17:13:55Z",
"created_at":"2012-01-13T17:13:55Z",
"name":"steve"
}]
Я думаю, что RestKit ожидает
{***people:***
[{
"id":1,
"updated_at":"2012-01-13T17:13:47Z",
"created_at":"2012-01-13T17:13:47Z",
"name":"dave"},
{
"id":2,
"updated_at":"2012-01-13T17:13:55Z",
"created_at":"2012-01-13T17:13:55Z",
"name":"steve"
}]
}
@interface Data : NSObject {
Person *person;
NSArray *dogs;
}
@property (nonatomic ,retain) Person *person;
@property (nonatomic ,retain) NSArray *dogs;
@end
@interface Person : NSObject {
NSString *name;
NSNumber *personId;
NSDate *updatedAt;
NSDate *createdAt;
}
@property (nonatomic , retain) NSDate * createdAt;
@property (nonatomic , retain) NSDate * updatedAt;
@property (nonatomic , retain) NSNumber *personId;
@property (nonatomic , retain) NSString *name;
@end
Вот мое отображение:
RKObjectMapping* userMapping = [RKObjectMapping mappingForClass:[Person class]];
[userMapping mapKeyPath:@"updated_at" toAttribute:@"updatedAt"];
[userMapping mapKeyPath:@"created_at" toAttribute:@"createdAt"];
[userMapping mapKeyPath:@"name" toAttribute:@"name"];
[userMapping mapKeyPath:@"id" toAttribute:@"personId"];
RKObjectMapping* dogMapping = [RKObjectMapping mappingForClass:[Dog class]];
[dogMapping mapKeyPath:@"created_at" toAttribute:@"createdAt"];
[dogMapping mapKeyPath:@"person_id" toAttribute:@"spersonId"];
[dogMapping mapKeyPath:@"name" toAttribute:@"name"];
[dogMapping mapKeyPath:@"updated_at" toAttribute:@"updatedAt"];
[dogMapping mapKeyPath:@"id" toAttribute:@"dogId"];
[[RKObjectManager sharedManager].mappingProvider setMapping:userMapping
forKeyPath:@"person"];
RKObjectRouter * router = [RKObjectManager sharedManager].router;
[router routeClass: [Person class] toResourcePath:@"/people/:personId"];
[router routeClass: [Person class] toResourcePath:@"/people"
forMethod:RKRequestMethodPOST];
RKObjectMapping *personSerializationMapping= [RKObjectMapping mappingForClass:
[NSDictionary class]];
[personSerializationMapping mapKeyPath:@"name" toAttribute:@"person[name]"];
[[RKObjectManager sharedManager].mappingProvider
setSerializationMapping:personSerializationMapping forClass: [Person class]];
Person* dave =[[Person alloc]init ];
dave.name = @"data";
NSLog(@"%@", [daveLiu name]);
//NSLog("name is %@", daveLiu.description );
[[RKObjectManager sharedManager] postObject:dave delegate:self];
ОБНОВЛЕНИЕ! Я получил приведенный выше код для работы.Он сохранится на сервере rails, но я все еще получаю сообщение об ошибке!
Processing PeopleController#create (for 127.0.0.1 at 2012-01-16 06:12:18) [POST]
Parameters: {"person"=>{"name"=>"data"}}
Person Create (0.4ms) INSERT INTO "people" ("updated_at", "created_at", "name") VALUES('2012-01-16 14:12:18', '2012-01-16 14:12:18', 'data')
Completed in 11ms (View: 1, DB: 0) | 200 OK [http://localhost/people]
W restkit.object_mapping:RKObjectMapper.m:60 Adding mapping error: Could not find an object mapping for keyPath: ''
E restkit.network:RKObjectLoader.m:178 Encountered errors during mapping: Could not find an object mapping for keyPath: ''
Error Domain=org.restkit.RestKit.ErrorDomain Code=1001 "Could not find an object mapping for keyPath: ''" UserInfo=0x4e6c4e0 {=RKObjectMapperKeyPath, NSLocalizedDescription=Could not find an object mapping for keyPath: ''}