2011-10-14 16 views
5

में नेस्टेड ऑब्जेक्ट सरणी के साथ, जटिल ऑब्जेक्ट मैपिंग को पुनर्स्थापित करें, मैं डेटा को मैप करने के लिए कोर्डटा और रीस्टकिट का उपयोग कर रहा हूं।कोर डेटा

यहाँ getsales फोन के लिए

{ "success":true, 
"sales" : [ 
      { 
     "brands" :[ 
     {"id":"637", "name":"XYZ"}, 
     {"id":"638", "name":"abc"} 
     ] 
     "end_date" = "2011-10-14 12:00:00", 
     "id" = 3794, 
     "image" = "http://dummy.something.com.jpg", 
     "name" = "test", 
    }, 
     { 
     "brands" =[ 
     {"id":"640", "name":"abc"} 
     ], 
     "end_date" = "2011-10-14 12:00:00", 
     "id" = 3766, 
     "image" = "http://dummy.something.com.jpg", 
     "name" = "text2", 
    }, 
     { 
     "brands" =[ 
     {"id":"641", "name":"XYZ"}, 
     {"id":"642", "name":"abc"}, 
     {"id":"643", "name":"def"} 
     ], 
     "end_date" = "2011-11-06 12:00:00", 
     "id" = 3798, 
     "image" = "http://dummy.something.com.jpg", 
     "name" = "test3", 
    } 
] 
} 

मैं

@interface Sale : NSManagedObject{ 
} 
@property (nonatomic, retain) NSNumber * ID; 
@property (nonatomic, retain) NSString * name; 
@property (nonatomic, retain) NSDate * endDate; 
@property (nonatomic, retain) NSString * imageUrl; 

@implementation Sale 

@dynamic ID; 
@dynamic name; 
@dynamic startDate; 
@dynamic endDate; 
@dynamic imageUrl; 

है मैं की

- (void)getSales{ 
    RKObjectManager* objectManager = [RKObjectManager  objectManagerWithBaseURL:@"http://baseurl.com"]; 
    RKManagedObjectStore* objectStore = [RKManagedObjectStore  objectStoreWithStoreFilename:@"base.sqlite"]; 
objectManager.objectStore = objectStore; 


RKManagedObjectMapping* saleMapping = [RKManagedObjectMapping mappingForClass:[Sale class]]; 
    [saleMapping mapKeyPathsToAttributes: 
    @"id", @"ID", 
    @"name", @"name", 
    @"start_date",@"startDate", 
    @"end_date", @"endDate", 
    @"image", @"imageUrl", 
    nil]; 

    saleMapping.primaryKeyAttribute = @"ID"; 
    [[RKObjectManager sharedManager].mappingProvider setMapping:saleMapping forKeyPath:@"sales"]; 

[[RKObjectManager sharedManager] loadObjectsAtResourcePath:@"/getSales/" objectMapping:saleMapping delegate:self]; 
} 

अनिवार्य रूप से मैं नेस्ट है सरणियों निम्नलिखित के रूप में प्रतिक्रिया मैप करने के लिए कोशिश कर रहा हूँ json प्रतिक्रिया है वस्तुओं, इन वस्तुओं को मैप करने का सही तरीका क्या है ?? और किस प्रकार की संपत्ति को बिक्री वर्ग को ब्रांड सूची को स्टोर करना होगा ??

किसी भी मदद की सराहना की जाती है, मैंने पहले ही इसे ठीक करने में बहुत अधिक समय बर्बाद कर दिया है।

उत्तर

10

जोड़ने का प्रयास करें:

[saleMapping mapKeyPath:@"brands" toRelationship:@"brands" withMapping:[BrandObject objectMapping]];

जहां [BrandObject objectMapping] BrandObject के लिए मानचित्रण (साथ id और name गुण एक NSManagedObject) है।

अनिवार्य रूप से आप घोंसला मैपिंग के लिए mapKeyPath:toRelationship:withMapping: का उपयोग कर सकते हैं। तुम भी प्रकार NSSet के साथ अपने बिक्री वस्तु के लिए एक संपत्ति जोड़ने की आवश्यकता होगी:

@property (nonatomic, retain) NSSet *brands;

अंत में, बिक्री वस्तु के कार्यान्वयन में, जोड़ें: @dynamic brands अन्य @dynamic बयान के साथ।

आशा है कि इससे मदद मिलती है! धन्यवाद।

+1

क्या आप (या कोई भी) अंतिम चरण की व्याख्या कर सकते हैं, "थोड़ा अधिक विस्तार से एनएसएससेट * ब्रांड नामक आपकी बिक्री वस्तु में एक गतिशील संपत्ति जोड़ें"? वहीं मैं लटका हुआ हूँ। –

+0

मैंने एनएसएससेट संपत्ति के बारे में अधिक जानकारी के साथ अद्यतन किया है। धन्यवाद! –