largish (5000 항목) JSON 파일의 이미지와 텍스트를 표시 할 셀이있는 UITableView
이 있습니다. JSON을 스트리밍하고 UITableView
을 즉시 업데이트하기를 원합니다.하지만 배관을 해결할 수 없습니다.Objective-C iOS : JSON 스트림에서 즉시 UITableView 채우기 시작
- (NSArray *)parseJSONIntoImageObjectsFromData:(NSData *)rawJSONData {
NSError *error;
NSMutableArray *arrayOfImageObjects = [[NSMutableArray alloc] init];
NSURL *myURL = [[NSURL alloc] initWithString:self.urlString];
NSData *objects = [NSData dataWithContentsOfURL:myURL];
NSInputStream *stream = [[NSInputStream alloc] initWithData:objects];
[stream open];
NSMutableArray *arrayFromStream = [NSJSONSerialization JSONObjectWithStream:stream options:NSJSONReadingAllowFragments error:&error];
for (NSDictionary *JSonDictionary in arrayFromStream) {
NSLog(@"Count is %lu", (unsigned long)arrayOfImageObjects.count);
NSInteger imgID = (NSInteger)JSonDictionary[@"id"];
ImageObject *newImageObject = [[ImageObject alloc] initWithID:imgID andTitle:JSonDictionary[@"title"] andThumbnailURL:JSonDictionary[@"thumbnailUrl"]];
[arrayOfImageObjects addObject:newImageObject];
}
return arrayOfImageObjects;
}
디버그 창에 NSLog
이 나타나므로 확실히 스트림으로 가져옵니다. 그러나 반환을 기다리기 때문에 완료해야합니다. 나는 이것에 대해 조금 당황하고 좋은 코드 샘플을 찾을 수 없다. 아마도 스트림을 반환합니까?
EDIT : 내가 발생하는 간단한 지연에 대해 크게 우려하지 않고 있으며, 지연이 구문 분석보다 검색에 더 많은 것이라고 확신합니다. 단지 스트림과 업데이트로 데이터를 검색하는 방법을 배우고 싶습니다. 이 방법을 개선하기 위해 점진적으로 UITableView
을 사용하십시오. 데이터 검색 및 조작 작업을 즐기며 더 많이 알면 내 기술을 향상 시키려고합니다.
또한 이미지는 표시 시간에 NSOperationQueue
을 사용하여 비동기 적으로 검색되며이 작업에는 별 문제가되지 않습니다.
이것은 가치있는 최적화 일 수 있지만 5000 JSON 객체를 구문 분석하는 데 걸리는 시간을 측정 했습니까? JSON 객체 자체가 너무 크지 않으면 무시할 정도로 오래 걸릴 것입니다. – MaxGabriel
@MaxGabriel 다운로드와 구문 분석에 약 5 초가 걸리지 만, 전혀 나쁘지는 않지만 배울 점이 있습니다. –
데이터를 "페이징"하는 것도 고려할 수 있습니다. 따라서 한 번에 100 개 개체 만 가져오고 (API로 해당 능력을 가진 경우) tableView : willDisplayCell : forRowAtIndexPath와 같은 것을 사용하여 다음 개체 집합을로드 할시기를 결정합니다. – Fraggle