Note that there are some explanatory texts on larger screens.

plurals
  1. POObjective C + RESTKit: Problems with getting Objects
    primarykey
    data
    text
    <p>I want to use RestKit for a Restful Webservice to communicate between an LAMP-environment and an iOS-App. Therefore I made a first test to check out if it all works out like described in the tutorials available and on the RestKit page.</p> <p>Right now the code looks like this:</p> <pre><code>RKObjectManager* objectManager = [RKObjectManager managerWithBaseURLString:@"http://localhost/resttest"]; objectManager.client.requestQueue.showsNetworkActivityIndicatorWhenBusy = YES; #ifdef RESTKIT_GENERATE_SEED_DB NSString *seedDatabaseName = nil; NSString *databaseName = RKDefaultSeedDatabaseFileName; #else NSString *seedDatabaseName = RKDefaultSeedDatabaseFileName; NSString *databaseName = @"CoreData.sqlite"; #endif objectManager.objectStore = [RKManagedObjectStore objectStoreWithStoreFilename:databaseName usingSeedDatabaseName:seedDatabaseName managedObjectModel:nil delegate:self]; // Map Person Object RKManagedObjectMapping *personMapping = [RKManagedObjectMapping mappingForClass:[Person class] inManagedObjectStore:objectManager.objectStore]; //RKManagedObjectMapping *personMapping = [RKManagedObjectMapping mappingForEntityWithName:@"Person" inManagedObjectStore:[RKObjectManager sharedManager].objectStore]; [personMapping mapKeyPath:@"id" toAttribute:@"person_id"]; [personMapping mapKeyPath:@"firstname" toAttribute:@"person_firstname"]; [personMapping mapKeyPath:@"lastname" toAttribute:@"person_lastname"]; [personMapping mapKeyPath:@"gender" toAttribute:@"person_gender"]; personMapping.primaryKeyAttribute = @"id"; // Register our mappings with the provider; [objectManager.mappingProvider setMapping:personMapping forKeyPath:@"/person"]; objectManager.acceptMIMEType = RKMIMETypeJSON; #ifdef RESTKIT_GENERATE_SEED_DB RKLogConfigureByName("RestKit/ObjectMapping", RKLogLevelInfo); RKLogConfigureByName("RestKit/CoreData", RKLogLevelTrace); #endif [objectManager loadObjectsAtResourcePath:@"/person" delegate:self]; </code></pre> <p><br /><br /> This is how my Managed Object looks like:</p> <pre><code>@interface Person : NSManagedObject @property (nonatomic, retain) NSString * person_firstname; @property (nonatomic, retain) NSString * person_lastname; @property (nonatomic, retain) NSString * person_gender; @property (nonatomic, retain) NSNumber * person_id; @end </code></pre> <p><br /><br /> And this is the dummy-code on server side which only returns some json example string:</p> <pre><code>&lt;?php header('Content-type: application/json'); if($_SERVER['REQUEST_METHOD'] == 'GET') { $json_string = '{ "persons": [ { "id": "1", "firstname": "hans", "lastname": "maier", "genre": "m" }, { "id": "2", "firstname": "michael", "lastname": "schmidt", "genre": "w" }] }'; echo $json_string; } ?&gt; </code></pre> <p><br /> The URI to get the returned json-String is <a href="http://localhost/resttest/person(/index.php" rel="nofollow">http://localhost/resttest/person(/index.php</a>). <br /><br /><br /></p> <p>My problems are:</p> <ul> <li><p>I always get this Error when i don't define a resource path for '':</p> <p>E restkit.network:RKObjectLoader.m:216 Encountered errors during mapping: Could not find an object mapping for keyPath: ''</p></li> </ul> <p>and I don't know why this happens. No other example I tried has this problem, but I don't have a clue what I'm doing wrong.</p> <ul> <li>When it works (I have to change the Base URL to <a href="http://localhost/resttest/person" rel="nofollow">http://localhost/resttest/person</a>), I get an empty object instead of an error.</li> </ul> <p><br /><br /> I would appreciate any help on this topic, because right now i don't know what I'm doing wrong.</p> <p>Thank you!</p> <p>Edit 03.05.2012:</p> <p>Here is what i get in the logs:</p> <pre><code>2012-05-03 12:52:05.067 RESTKitCoreDataTest[5139:13807] D restkit.object_mapping:RKObjectMapper.m:320 Performing object mapping sourceObject: { persons = ( { firstname = hans; gender = m; id = 1; lastname = maier; }, { firstname = michael; gender = w; id = 2; lastname = schmidt; } ); } and targetObject: (null) 2012-05-03 12:52:05.067 RESTKitCoreDataTest[5139:13807] T restkit.object_mapping:RKObjectMapper.m:278 Examining keyPath '' for mappable content... 2012-05-03 12:52:05.067 RESTKitCoreDataTest[5139:13807] D restkit.object_mapping:RKObjectMapper.m:264 Found mappable data at keyPath '': { persons = ( { firstname = hans; gender = m; id = 1; lastname = maier; }, { firstname = michael; gender = w; id = 2; lastname = schmidt; } ); } 2012-05-03 12:52:05.073 RESTKitCoreDataTest[5139:13807] D restkit.object_mapping:RKObjectMapper.m:210 Asked to map source object { persons = ( { firstname = hans; gender = m; id = 1; lastname = maier; }, { firstname = michael; gender = w; id = 2; lastname = schmidt; } ); } with mapping &lt;RKManagedObjectMapping:0x811eb60 objectClass=Person keyPath mappings =&gt; ( "RKObjectKeyPathMapping: id =&gt; person_id", "RKObjectKeyPathMapping: firstname =&gt; person_firstname", "RKObjectKeyPathMapping: lastname =&gt; person_lastname", "RKObjectKeyPathMapping: gender =&gt; person_gender" )&gt; 2012-05-03 12:52:05.074 RESTKitCoreDataTest[5139:13807] D restkit.object_mapping:RKObjectMappingOperation.m:617 Starting mapping operation... 2012-05-03 12:52:05.074 RESTKitCoreDataTest[5139:13807] T restkit.object_mapping:RKObjectMappingOperation.m:618 Performing mapping operation: RKObjectMappingOperation for 'Person' object. Mapping values from object { persons = ( { firstname = hans; gender = m; id = 1; lastname = maier; }, { firstname = michael; gender = w; id = 2; lastname = schmidt; } ); } to object &lt;Person: 0x6e295d0&gt; (entity: Person; id: 0x6e29610 &lt;x-coredata:///Person/t99EFF6DC-EBDA-405C-8AFF-D082E4A8542F2&gt; ; data: { "person_firstname" = nil; "person_gender" = nil; "person_id" = 0; "person_lastname" = nil; }) with object mapping &lt;RKManagedObjectMapping:0x811eb60 objectClass=Person keyPath mappings =&gt; ( "RKObjectKeyPathMapping: id =&gt; person_id", "RKObjectKeyPathMapping: firstname =&gt; person_firstname", "RKObjectKeyPathMapping: lastname =&gt; person_lastname", "RKObjectKeyPathMapping: gender =&gt; person_gender" )&gt; 2012-05-03 12:52:05.074 RESTKitCoreDataTest[5139:13807] T restkit.object_mapping:RKObjectMappingOperation.m:388 Did not find mappable attribute value keyPath 'id' 2012-05-03 12:52:05.074 RESTKitCoreDataTest[5139:13807] T restkit.object_mapping:RKObjectMappingOperation.m:388 Did not find mappable attribute value keyPath 'firstname' 2012-05-03 12:52:05.075 RESTKitCoreDataTest[5139:13807] T restkit.object_mapping:RKObjectMappingOperation.m:388 Did not find mappable attribute value keyPath 'lastname' 2012-05-03 12:52:05.075 RESTKitCoreDataTest[5139:13807] T restkit.object_mapping:RKObjectMappingOperation.m:388 Did not find mappable attribute value keyPath 'gender' 2012-05-03 12:52:05.075 RESTKitCoreDataTest[5139:13807] D restkit.object_mapping:RKObjectMappingOperation.m:638 Mapping operation did not find any mappable content 2012-05-03 12:52:05.075 RESTKitCoreDataTest[5139:13807] T restkit.core_data:RKManagedObjectMappingOperation.m:98 relationshipsAndPrimaryKeyAttributes: { } 2012-05-03 12:52:05.075 RESTKitCoreDataTest[5139:13807] D restkit.object_mapping:RKObjectMapper.m:351 The following operations are in the queue: ( ) 2012-05-03 12:52:05.075 RESTKitCoreDataTest[5139:13807] D restkit.object_mapping:RKObjectMapper.m:366 Finished performing object mapping. Results: { } 2012-05-03 12:52:05.080 RESTKitCoreDataTest[5139:fb03] Loaded persons: ( ) </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.
 

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