2011-08-07 14 views
7

के साथ कई रिश्तों के लिए Nested मैं निम्नलिखित JSON के लिए कोरडाटा समर्थित मॉडल के लिए संबंधों को मैप करने की कोशिश कर रहा हूं।RestKit

{ 
    "photos": [ 
     { 
      "id": 1, 
      "thumb": "http://localhost/test_1_thumb.png", 
      "image": "http://localhost/test_1.png", 
      "date": "2011-07-02T06:06:16Z", 
      "likes": 0, 
      "user": { 
       "id": 1, 
       "username": "User1", 
       "avatar": "http://cdn.domain.com/avatar.jpg" 
      }, 
      "comments": [ 
       { 
        "date": "2011-07-02T06:06:16Z", 
        "text": "This is the only comment", 
        "id": 1, 
        "author": { 
         "username": "User1", 
         "id": 1, 
         "avatar": "http://cdn.domain.com/avatar.jpg" 
        } 
       } 
      ] 
     } 
    ] 
} 

मेरे CoreData मॉडल जो मैं RestKit के OM2 वर्गों के साथ मैप किया गया है:

यहाँ JSON है।

CoreData Entities

फोटो वर्ग।

// Map relationships between entities. 
[commentMapping mapKeyPath:@"author" toRelationship:@"author" withMapping:userMapping]; 
[photoMapping mapKeyPath:@"user" toRelationship:@"owner" withMapping:userMapping]; 
[photoMapping mapKeyPath:@"comments" toRelationship:@"comments" withMapping:commentMapping]; 
इस मैं इस त्रुटि के साथ, लेकिन एक तस्वीर के comments विशेषता सभी का उपयोग करने की, सक्षम हूँ के साथ

:

@interface Photo : NSManagedObject 

@property (nonatomic, retain) NSString * thumbnailUrl; 
@property (nonatomic, retain) NSString * imageUrl; 
@property (nonatomic, retain) NSDate * date; 
@property (nonatomic, retain) NSNumber * likes; 
@property (nonatomic, retain) NSNumber * photoID; 
@property (nonatomic, retain) User *owner; 
@property (nonatomic, retain) NSSet *comments; 

@end 

@interface Photo (CoreDataGeneratedAccessors) 

- (void)addCommentsObject:(Comment *)value; 
- (void)removeCommentsObject:(Comment *)value; 
- (void)addComments:(NSSet *)values; 
- (void)removeComments:(NSSet *)values; 

@end 

@implementation Photo 

@dynamic thumbnailUrl; 
@dynamic imageUrl; 
@dynamic date; 
@dynamic likes; 
@dynamic photoID; 
@dynamic owner; 
@dynamic comments; 

@end 

अब हिस्सा मैं पर पूरी तरह से यकीन नहीं है रिश्तों है Comments = Relationship 'comments' fault on managed object । मुझे लगता है कि फोटो मॉडल के साथ ऐसा करना है comments एनएसएससेट के रूप में परिभाषित किया गया है या मैं रिलेशनशिप मैपिंग के साथ कुछ गलत कर रहा हूं लेकिन मुझे यकीन नहीं है।

उत्तर

7

तो पता चला है कि समस्या RestKit या मानचित्रण लेकिन कैसे CoreData कार्यों की मेरी समझ से कोई संबंध नहीं था।

- (void)objectLoader:(RKObjectLoader*)objectLoader didLoadObjects:(NSArray*)objects { 
    NSLog(@"Loaded photos: %@", objects); 

    for (id object in objects) { 
     Photo *photo = object; 
     // Print other photo attributes... 

     NSLog(@"Comments = %@", photo.comments); 
    } 
} 

समस्या सीधे संग्रह वस्तु प्रिंट करने का प्रयास किया गया था:

मैं इस प्रकार मेरी delgate में मैप JSON ऑब्जेक्ट ऐक्सेस कर रहे थे। कोरडाटा डेटा स्टोर पर गलती नहीं करेगा। इस प्रकार एक तेज़ पुनरावृत्ति के साथ बस प्रतिस्थापन और गुणों तक पहुंचने से मुझे टिप्पणी ऑब्जेक्ट तक पहुंचने की अनुमति मिली।

for (Photo *photo in objects) { 
    for (Comment *comment in photo.comments) NSLog(@"Comment = %@", comment.text); 
} 
+0

आपने मुझे बचा लिया है, बहुत बहुत धन्यवाद! –

2

आप की तरह कुछ की जरूरत है:

[objectManager.mappingProvider setMapping: commentMapping forKeyPath: @ "टिप्पणी"];

इसके अलावा चेकआउट https://github.com/RestKit/RestKit/wiki/Object-mapping

+0

मुझे नहीं लगता कि यह सही ढंग से संबंध स्थापित करेगा, हालांकि यह होगा? – drewish

संबंधित मुद्दे