2016-06-30 4 views
3

JSON은 :구문 분석 배열

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

그래서 JSON 응답에 두 개의 객체와 배열이있다.

@interface NewsRO : RLMObject 

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

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

@end 

및 구현 :

#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 

질문 : 영역에

1) 어떻게 더 나은 구문 분석 JSON 배열 내 영역 모델처럼 보인다?

2) 내 방식으로 JSON을 구문 분석 할 때 캐시 된 값을 확인해야합니까?

답변