Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 26th, 2012  |  syntax: None  |  size: 2.61 KB  |  hits: 11  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. Relationships not Connected with Core Data and RestKit
  2. {
  3.   "artist" : {
  4.     "artistId" : 123,
  5.     "artistName" : "The Artist",
  6.     "albums" : [
  7.       {
  8.         "albumPrice" : 12.99,
  9.         "albumId" : 456,
  10.         "trackCount" : 12,
  11.         "albumName" : "Album Title",
  12.       },
  13.       {
  14.         "albumPrice" : 10.99,
  15.         "albumId" : 789,
  16.         "trackCount" : 10,
  17.         "albumName" : "Another Album Title",
  18.       }
  19.     ]
  20.   }
  21. }
  22.        
  23. @interface Artist : NSManagedObject
  24. @property (nonatomic, retain) NSNumber * artistId;
  25. @property (nonatomic, retain) NSString * artistName;
  26. @property (nonatomic, retain) NSSet *albums;
  27. @end
  28. @interface Artist (CoreDataGeneratedAccessors)
  29. - (void)addAlbumsObject:(Album *)value;
  30. - (void)removeAlbumsObject:(Album *)value;
  31. - (void)addAlbums:(NSSet *)values;
  32. - (void)removeAlbums:(NSSet *)values;
  33. @end
  34.  
  35. @interface Album : NSManagedObject
  36. @property (nonatomic, retain) NSNumber * albumId;
  37. @property (nonatomic, retain) NSString * albumName;
  38. @property (nonatomic, retain) NSNumber * albumPrice;
  39. @property (nonatomic, retain) NSNumber * trackCount;
  40. @property (nonatomic, retain) NSManagedObject *artist;
  41. @end
  42.        
  43. // Initialize our RestKit singleton
  44. RKClient *client = [RKClient clientWithBaseURL:API_URL];  
  45.  
  46. // Initialize for Object mapping
  47. RKObjectManager* objectManager = [RKObjectManager objectManagerWithBaseURL:API_URL];
  48. objectManager.objectStore = [RKManagedObjectStore objectStoreWithStoreFilename:@"AppName.sqlite"];
  49.  
  50. // Configure ALBUM mapping
  51. RKManagedObjectMapping* albumMapping = [RKManagedObjectMapping mappingForClass:[Album class]];
  52. albumMapping.primaryKeyAttribute = @"albumId";
  53. [albumMapping mapKeyPath:@"albumId" toAttribute:@"albumId"];
  54. [albumMapping mapKeyPath:@"albumName" toAttribute:@"albumName"];
  55. [albumMapping mapKeyPath:@"albumPrice" toAttribute:@"albumPrice"];
  56. [albumMapping mapKeyPath:@"trackCount" toAttribute:@"trackCount"];
  57.  
  58. // Configure ARTIST mapping
  59. RKManagedObjectMapping* artistMapping = [RKManagedObjectMapping mappingForClass:[Artist class]];
  60. artistMapping.primaryKeyAttribute = @"artistId";
  61. [artistMapping mapKeyPath:@"artistId" toAttribute:@"artistId"];
  62. [artistMapping mapKeyPath:@"artistName" toAttribute:@"artistName"];    
  63. [artistMapping mapKeyPath:@"albums" toRelationship:@"albums" withMapping:albumMapping];
  64.  
  65. // Register mappings with the provider
  66. [[RKObjectManager sharedManager].mappingProvider setMapping:albumMapping forKeyPath:@"albums"];
  67. [[RKObjectManager sharedManager].mappingProvider setMapping:artistMapping forKeyPath:@"artist"];
  68.        
  69. RKObjectManager *objectManager = [RKObjectManager sharedManager];
  70. [objectManager loadObjectsAtResourcePath:@"/artist/123/albums" delegate:self];