2011-10-14 29 views
5

tôi đang sử dụng coredata và bộ lưu trữ để lập bản đồ dữ liệu.Bản đồ đối tượng phức tạp Restkit, với mảng đối tượng lồng nhau, trong Dữ liệu chính

đây là phản ứng json cho getsales gọi

{ "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", 
    } 
] 
} 

tôi có

@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; 

tôi đang cố gắng để lập bản đồ phản ứng như sau

- (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]; 
} 

mảng về cơ bản tôi đã lồng nhau của các đối tượng, cách chính xác để ánh xạ các đối tượng này là gì ?? và loại Hạng tài sản nào nên lớp Bán phải lưu trữ danh sách thương hiệu ??

Bất kỳ trợ giúp nào được đánh giá cao, tôi đã lãng phí quá nhiều thời gian để sửa lỗi này.

Trả lời

10

Hãy thử thêm:

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

nơi [BrandObject objectMapping] là bản đồ cho BrandObject (một NSManagedObject với idname tài sản).

Về cơ bản bạn có thể sử dụng mapKeyPath:toRelationship:withMapping: để ánh xạ tổ. Bạn cũng sẽ cần phải thêm một tài sản để đối tượng bán của bạn với các loại NSSet:

@property (nonatomic, retain) NSSet *brands;

Cuối cùng, trong việc thực hiện các đối tượng bán, thêm: @dynamic brands cùng với những điều khoản @dynamic khác.

Hy vọng điều này sẽ hữu ích! Cảm ơn.

+1

Bạn có thể (hoặc bất kỳ ai) giải thích bước cuối cùng, "Thêm một thuộc tính động vào đối tượng Bán của bạn có tên NSSet * thương hiệu" chi tiết hơn một chút không? Đó là nơi tôi bị treo cổ. –

+0

Tôi đã cập nhật chi tiết hơn về thuộc tính NSSet. Cảm ơn! –

Các vấn đề liên quan