Note that there are some explanatory texts on larger screens.

plurals
  1. PORails way to change current json output
    primarykey
    data
    text
    <p>I'm working with the JSON below. The outer label is missing.</p> <pre><code>[{ "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" }] </code></pre> <p>I think RestKit expects </p> <pre><code>{***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 </code></pre> <p>Here is my mapping:</p> <pre><code>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]; </code></pre> <hr> <p><strong>UPDATE!</strong> I got the above code to work. It will save to the rails server, but I'm getting a keypath error still!</p> <pre><code>Processing PeopleController#create (for 127.0.0.1 at 2012-01-16 06:12:18) [POST] Parameters: {"person"=&gt;{"name"=&gt;"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: ''} </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload