MessageObject でフェッチ リクエストを実行し、次のものをプリフェッチしています。
[fetchRequest setRelationshipKeyPathsForPrefetching:
[NSArray arrayWithObjects:@"tags", @"date", nil]];
タグは多対多の関係 (つまり、タグは多くのメッセージを持つことができ、メッセージは多くのタグを持つことができます) であり、日付は対 1 の関係です (つまり、メッセージは 1 つの日付のみを持つことができますが、日付には多くのメッセージを含めることができます)。
テーブルを下にスクロールすると、タグと日付の両方にアクセスできます。私は SQLite デバッグを有効にしているので、Core Data が障害要求を実行するたびにログに表示されます。何らかの理由で、スクロールするたびに Date プロパティがプリフェッチされていません。CoreData: annotation: fault fulfilled from database for : 0x85bc7b0 <x-coredata://736D04C4-7DB3-40B7-B208-79B5DFD68260/MBDate/p61>
ただし、これはタグでは表示されず、日付のみです。Tags プロパティをプリフェッチしないと、スクロール時に同じメッセージがタグに表示されるので、Date プロパティではなく、プリフェッチが機能していることがわかります。
プリフェッチについて理解していないことがありますか? Date オブジェクトには文字列プロパティがあり、cellForRow でこの文字列プロパティにアクセスすると、何らかの理由で障害が発生します (プリフェッチされてから既に認識されているはずですが)。何か誤解していますか?