2016-06-30 10 views
3

JSON:Parse Array von JSON zu Realm

"id": 13 
"is_main": 1 
"topic_id": 1 
"images": [ 
    0: { 
    "id": 188 
    "title": "One 
     } 
    0: { 
    "id": 192 
    "title": "Two" 
     } 
    ] 

So gibt es ein Array mit zwei Objekte in Antwort JSON. Mein Realm Modell wie folgt aussieht:

@interface NewsRO : RLMObject 

@property NSNumber <RLMInt> *newsID; 
@property BOOL isMainNews; 
@property NSNumber <RLMInt> *topicID; 

@property NSArray *newsImages; 
@property RLMArray <NewsImagesRO *><NewsImagesRO> *storedNewsImagesRO; 

@end 

und Umsetzung:

#import "NewsRO.h" 

@implementation NewsRO 

+ (NSString *)primaryKey 
{ 
    return @"newsID"; 
} 

+ (NSArray<NSString *> *)ignoredProperties 
{ 
    return @[@"newsImages"]; 
} 

- (void)setNewsImages:(NSArray *)newsImages 
{ 
    for (NSDictionary *dict in newsImages) 
{ 
    dispatch_sync(dispatch_queue_create("checkCashedImage", 0), ^{ 
     NewsImagesRO *cashedObject = [NewsImagesRO objectForPrimaryKey:dict[[NKVHelper sharedInstance].kID]]; 
     if (cashedObject == nil || [cashedObject.newsImagePath isEqual:dict[[NKVHelper sharedInstance].kImagePath]] == NO) 
     { 
      NewsImagesRO *newsImage = [[NewsImagesRO alloc]init]; 
      newsImage.newsImageID = dict[[NKVHelper sharedInstance].kID]; 
      newsImage.newsImagePath = dict[[NKVHelper sharedInstance].kImagePath]; 
      newsImage.newsImageTitle = dict[[NKVHelper sharedInstance].kImageTitle]; 
      newsImage.newsImageWidth = dict[[NKVHelper sharedInstance].kImageWidth]; 
      newsImage.newsImageHeight = dict[[NKVHelper sharedInstance].kImageHeight]; 
      [self.storedNewsImagesRO addObject:newsImage]; 
     } 
    }); 
} 
} 

- (NSArray *)newsImages { 
    return [self valueForKey:@"storedNewsImagesRO"]; 
} 

@end 

Fragen:

1) Wie besser Parse-JSON-Arrays Reich?

2) Sollte ich nach einem zwischengespeicherten Wert suchen, wenn ich JSON auf meine Art parse?

Antwort