0

「述語の変更」について検索して読むのをやめることはできませんが、問題を解決する方法がまだわかりません...私が持っているものは次のとおりです。

1 - さまざまなセルを含むいくつかのテーブルビューで、各セルには複数のテキスト フィールドがあります。

2 - ユーザーがこれらのテキストフィールドのいずれかを押すと、テーブルビュー (ポップオーバー内) が表示されます。

3 - この popoverTableview にはすべてのコア データ「作業」があり、押されたテキスト フィールドに挿入するデータを提供すると想定されています。

4 - すべて正常に動作します...たとえば、ユーザーが tableview1 から tableview2 に渡すたびに述語を変更する必要があるという事実を除いて。

5 - 以下は私の popoverTableview 内にある NSFetchedResultsController メソッドで、次のような多数のアプローチを試しました。「スイッチ」; テーブルビューのテキストフィールドタグもポイントしますが、何もポイントしません。キャッシュは既に nil に設定されているため、nil に設定する必要はないと思います...次も削除しようとしました。

そして何も!!!、私は何を理解する必要がありますか? 私が得ていないものは何ですか?私はこれで何日も失っています.HELP!

- (NSFetchedResultsController *)fetchedResultsController
{
if (_fetchedResultsController != nil)
{
    return _fetchedResultsController;
}

NSFetchRequest *fetchRequestList = [[NSFetchRequest alloc] init];
NSEntityDescription *entityList = [NSEntityDescription entityForName:@"List" inManagedObjectContext:self.managedObjectContext];
[fetchRequestLista setEntity:entityList];

TableViewOne *table1 = [[Cobertura alloc]init];
TableViewTwo *table2 = [[Cobertura alloc]init];    

if (table1 textFieldShouldBeginEditing:table1.textFieldPressed)
{
fetchRequestList.predicate = [NSPredicate predicateWithFormat:@"%K IN %@", @"reference", arrayTableview1];
}

if (table2 textFieldShouldBeginEditing:table2.textFieldPressed)
{
fetchRequestList.predicate = [NSPredicate predicateWithFormat:@"%K IN %@", @"reference", arrayTableview2];
}

NSSortDescriptor *cellTitle = [[NSSortDescriptor alloc] initWithKey:@"reference" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:cellTitle, nil];
[fetchRequestLista setSortDescriptors:sortDescriptors];

_fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequestLista managedObjectContext:self.managedObjectContext sectionNameKeyPath:@"referencia" cacheName:nil];
_fetchedResultsController.delegate = self;
self.fetchedResultsController = _fetchedResultsController;

return _fetchedResultsController;
}

前もって感謝します

4

1 に答える 1

1

FRC を明示的に nil するだけです。次に、FRC にフェッチを実行するように依頼します。

FRC のカスタム ゲッター メソッドは正常に見えます。tableview1 と tableview2 で述語が異なることを確認し、それに応じて FRC を構築します。ただし、FRC が nil の場合にのみ、このすべての作業が行われます。そうでない場合は、バッキング インスタンス変数 _fetchedResultsController を返すだけで、残りのコードはまったく実行されません。そのため、テーブル ビューを切り替えるときに FRC を明示的に nil する必要があります。

于 2013-11-04T06:15:39.467 に答える