- Relationships not Connected with Core Data and RestKit
- {
- "artist" : {
- "artistId" : 123,
- "artistName" : "The Artist",
- "albums" : [
- {
- "albumPrice" : 12.99,
- "albumId" : 456,
- "trackCount" : 12,
- "albumName" : "Album Title",
- },
- {
- "albumPrice" : 10.99,
- "albumId" : 789,
- "trackCount" : 10,
- "albumName" : "Another Album Title",
- }
- ]
- }
- }
- @interface Artist : NSManagedObject
- @property (nonatomic, retain) NSNumber * artistId;
- @property (nonatomic, retain) NSString * artistName;
- @property (nonatomic, retain) NSSet *albums;
- @end
- @interface Artist (CoreDataGeneratedAccessors)
- - (void)addAlbumsObject:(Album *)value;
- - (void)removeAlbumsObject:(Album *)value;
- - (void)addAlbums:(NSSet *)values;
- - (void)removeAlbums:(NSSet *)values;
- @end
- @interface Album : NSManagedObject
- @property (nonatomic, retain) NSNumber * albumId;
- @property (nonatomic, retain) NSString * albumName;
- @property (nonatomic, retain) NSNumber * albumPrice;
- @property (nonatomic, retain) NSNumber * trackCount;
- @property (nonatomic, retain) NSManagedObject *artist;
- @end
- // Initialize our RestKit singleton
- RKClient *client = [RKClient clientWithBaseURL:API_URL];
- // Initialize for Object mapping
- RKObjectManager* objectManager = [RKObjectManager objectManagerWithBaseURL:API_URL];
- objectManager.objectStore = [RKManagedObjectStore objectStoreWithStoreFilename:@"AppName.sqlite"];
- // Configure ALBUM mapping
- RKManagedObjectMapping* albumMapping = [RKManagedObjectMapping mappingForClass:[Album class]];
- albumMapping.primaryKeyAttribute = @"albumId";
- [albumMapping mapKeyPath:@"albumId" toAttribute:@"albumId"];
- [albumMapping mapKeyPath:@"albumName" toAttribute:@"albumName"];
- [albumMapping mapKeyPath:@"albumPrice" toAttribute:@"albumPrice"];
- [albumMapping mapKeyPath:@"trackCount" toAttribute:@"trackCount"];
- // Configure ARTIST mapping
- RKManagedObjectMapping* artistMapping = [RKManagedObjectMapping mappingForClass:[Artist class]];
- artistMapping.primaryKeyAttribute = @"artistId";
- [artistMapping mapKeyPath:@"artistId" toAttribute:@"artistId"];
- [artistMapping mapKeyPath:@"artistName" toAttribute:@"artistName"];
- [artistMapping mapKeyPath:@"albums" toRelationship:@"albums" withMapping:albumMapping];
- // Register mappings with the provider
- [[RKObjectManager sharedManager].mappingProvider setMapping:albumMapping forKeyPath:@"albums"];
- [[RKObjectManager sharedManager].mappingProvider setMapping:artistMapping forKeyPath:@"artist"];
- RKObjectManager *objectManager = [RKObjectManager sharedManager];
- [objectManager loadObjectsAtResourcePath:@"/artist/123/albums" delegate:self];