0

私はクラスを持っています、

@interface OnlineDataModel:TTModel <NSFetchedResultsControllerDelegate> {.. ..

TTModelは、

@interface TTModel:NSObject <TTModel> {.. ..

OnlineDataModelクラスはシングルトンであるため、そのオブジェクトが期限切れになることはありません。このクラス内でFetch操作を実行し、fetchedResultsControllerのデリゲートを自分で設定しています。現在、一定の遅延後にフェッチされたオブジェクトを変更して、コールバックが提供され、オブジェクトが変更され、変更がデータベースにも反映されていることを確認していますが、UIを更新できるように、OnlineDataModelクラスはコールバックを受信して​​いません。

私はそれにひどく立ち往生しているので、どんな助けでも大歓迎です。

前もって感謝します :)

4

2 に答える 2

1

どのように/どこでデリゲートを設定しますか? クラス メソッドでデリゲートを self に設定すると (その名前の前に - の代わりに + が付きます)、デリゲートはインスタンス オブジェクトではなくクラス オブジェクトに設定されます。

私にとってこれはうまくいきます:

@implementation MyViewController

...

- (NSFetchedResultsController *) fetchedResultsController
{
...
    [fetchedResultsController setDelegate: self];
...
    return fetchedResultsController;
}

- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller
{
    NSLog(@"data changed");
}

...

@end

コントローラー作成コードを投稿してください:)

于 2010-09-23T20:51:40.863 に答える
0

コードを投稿する前に、何か疑問があります。最初に次のコードを参照してください

Book *book = [[[[CDBManager sharedManager] fetchedResultsController] fetchedObjects] objectAtIndex:index];
[book setTitle:@"New Title"];
[[[DatabaseContext sharedObject] managedObjectContext] save:nil];

このコードにより、FetchedResultController からイベントが発生しますか? fetchedObjects は配列のコピーを返すと思います。それがコピーである場合、コールバックは絶対に受け取られません。しかし、私のコードに何かがあるよりも、ライブオブジェクトの配列です..これについてどう思いますか?

于 2010-09-23T21:11:12.903 に答える