0

独自の NSFetchedResultsController を持つ 4 つのテーブルビューがあります。

ある時点で、それらすべてをリセット/リロードしようとしています..そのように

fetchedResultsControllerArray = [NSArray arrayWithObjects:__fetchedResultsController1, __fetchedResultsController2, __fetchedResultsController3, __fetchedResultsController4, nil];


for (NSFetchedResultsController __strong *frc in fetchedResultsControllerArray){

    frc.delegate = nil;
    frc = nil;

    [frc performFetch:&error];
}

[tv1 reloadData];
[tv2 reloadData];
[tv3 reloadData];
[tv4 reloadData];

これは機能していません。テーブルに最新のデータが表示されていません。

ただし、列挙を取り出して、そのうちの1つだけで実行すると機能しますか?

fetchedResultsControllerArray = [NSArray arrayWithObjects:__fetchedResultsController1, __fetchedResultsController2, __fetchedResultsController3, __fetchedResultsController4, nil];

__fetchedResultsController1.delegate = nil;
__fetchedResultsController1 = nil;

[__fetchedResultsController1 performFetch:&error];

[tv1 reloadData];
[tv2 reloadData];
[tv3 reloadData];
[tv4 reloadData];

列挙中に私が間違っている可能性があることを誰かが説明できますか?

ありがとう!

4

1 に答える 1

1

[frc performFetch:&error]以前に設定したため、ループ内では効果がありませんfrc = nil

__fetchedResultsController1, ...のインスタンス変数であり、次のアクセスで再作成されるように、selfに設定したいと思いますか?nilこれをループで行うための醜い方法はないと思います。おそらく、4つのアイテムには価値がありません。

于 2012-08-16T18:46:38.367 に答える