すでに同様の質問をしましたが、まだ機能しません。30,000 件以上のレコードを含むコア データ データベースがあります。テーブルビューにフェッチしようとしています。コアデータに関する WWDC のプレゼンテーションを見ましたが、プレゼンターが提案したことは何でもうまくいきませんでした。そのテーブルからほとんどのフィールドを削除し、nsstring と日付を含む 4 つだけを残しました。私は setFetchBatchSize を異なる数値で使用しましたが、インストゥルメントを使用するとき、フェッチ コントローラーは 30k レコードすべてをフェッチしていました。私はそれを見ましたが、フェッチを下げるために何をしているのかまだわかりません. 別のスレッドを使用して svprogreshud を表示しましたが、スレッドがすぐに実行されないため、さらに遅くなったと思います。
また、データは12のセクションに分割されており、コアデータベースにはセクションを設定するための1文字のフィールドがあります。
-com.apple.CoreData.SQLDebug 1 も設定し、デバイスで実行すると、すべてのレコードを含むフェッチ要求の読み込みに 3 秒かかりましたが、CoreData: sql: pragma cache_size=200 CoreData: annotation: total fetch execution time: 3.1087s が表示されました36684 行の場合。
ここにコードの一部があります
-(void)useDocument{
if (self.peopleDatabase.documentState == UIDocumentStateClosed){
[self.peopleDatabase openWithCompletionHandler:^(BOOL success){
[self setupFetchResultsController];
}];
} else if (self.peopleDatabase.documentState == UIDocumentStateNormal){
[self setupFetchResultsController];
}
}
-(void)setupFetchResultsController
{
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"people"];
request.sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"pplicon" ascending:YES]];
[NSFetchedResultsController deleteCacheWithName:nil];
self.fetchedResultsController = nil;
[request setFetchBatchSize:50];
//[request setFetchLimit:100];
self.fetchedResultsController = [[NSFetchedResultsController alloc]initWithFetchRequest:request managedObjectContext:self.peopleDatabase.managedObjectContext sectionNameKeyPath:@"pplicon" cacheName:@"peopleCache"];
}
前もって感謝します!
更新ジョディ、答えてくれてありがとう。
テーブルへのコア データ セットアップに移動し、インデックス化された pplicon がチェックされます。他に何か確認する必要がありますか。私はwwdcビデオの指示に従い、NSManagedObjectContext executefetchを示すコアデータフェッチでインストゥルメントを実行しました..フェッチカウント36684、次にフェッチカウント12の別のもの また、サンプラーでは、peopleviewcontroller setupfetchResultsContoroller 363.75msおよびUIAplication Run 287.6msに費やされたほとんどの時間。アクティビティ モニターでは、アプリは 91 MB の実メモリを消費します。今回は何か改善点はありますか?他に何を確認して、電話が切れた場所を確認できますか?
セクションまで。以前はセクションに表示されていたデータベース pplicon に文字があり、データはそれによって並べ替えられます。
現在のデータ モデルには、文字列として 5 つの属性、日付として 1 つの属性を持つ 1 つのエンティティがあります。