私はテーブルビューで無限のスクロールで100万以上のエントリを読み込む必要があるアプリケーションを開発しています。毎回リクエストが1000件分送信され、JSONライブラリを介してデータがダウンロードされて解析されると、テーブルがリロードされます。私はこれを "setFetchBatchSize = 1000"のCoreDataで実装しました。ここでiphoneの膨大な(おそらく1百万のエントリ)データを持つUITableView
StreamModal *modal = [[StreamModal alloc]init];
StreamModal *modal = [NSEntityDescription insertNewObjectForEntityForName:@"StreamModal" inManagedObjectContext:managedObjectContext];
if([self isNotNull:[streamDataDict objectForKey:@"_id"]])
modal.stream_id = [streamDataDict objectForKey:@"_id"];
-(void)reloaData{
@try {
NSError *error;
if (![[self fetchedResultsController] performFetch:&error]) {
// Update to handle the error appropriately.
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
exit(-1); // Fail
}
NSLog(@"ferchresults count %d",[[_fetchedResultsController fetchedObjects]count]);
}
@catch (NSException *exception) {
NSLog(@"exception raised in reloadData in streamViewController class %@",exception);
}
@finally {
}
}
- (NSFetchedResultsController *)fetchedResultsController {
if (_fetchedResultsController != nil) {
return _fetchedResultsController;
}
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"StreamModal" inManagedObjectContext:appDelegate.managedObjectContext];
[fetchRequest setEntity:entity];
NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"date" ascending:NO];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]];
[fetchRequest setFetchBatchSize:1000];
//[fetchRequest setFetchLimit:2000];
NSFetchedResultsController *theFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:appDelegate.managedObjectContext sectionNameKeyPath:nil cacheName:nil];
self.fetchedResultsController = theFetchedResultsController;
_fetchedResultsController.delegate = self;
fetchRequest = nil;
theFetchedResultsController = nil;
return _fetchedResultsController;
}
は私が今までのデータをconnectionfinishedloadingときに私はNSManagedObjectクラス(StreamModal)にデータを移入していますし、私は12000をロードした後、問題がアプリはメモリの例外を取得しているされてdata.Hereリロードを呼び出して、使用していたコードですテーブルのエントリとクラッシュする私はどのようにメモリ例外なしですべてのエントリを読み込むことができます。私はCoreDataの概念が新しく、開発者ガイドを通じてコアデータの概念を読みましたが、メモリ処理に関する情報は見つかりませんでした。私を助けてください。
iPhoneの画面で親指で100万行をスクロールするのにどれくらいの時間がかかりますか?これはばかげているようだ。 – jrturton
OMG。クライアントは誰ですか?私は彼/彼女に会いたいですか? 100万エントリ? –
私の知る限り、ユーザーがスクロールするたびに、または他のイベントのためにデータの部分をダウンロードする方が良いと言えます。そうしないと、デバイスのメモリが制限され、一度に多くのデータを読み込むことができなくなります。 –