0

我有一堂课,

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

TTModel 在哪里,

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

OnlineDataModel 类是 Singleton,所以它的对象永不过期。我正在这个类中执行 Fetch 操作并自行设置 fetchedResultsController 的委托。现在我正在更改持续延迟后获取的对象,以检查它是否提供回调,对象已更改并且更改也反映到数据库中,但是 OnlineDataModel 类没有接收回调,因此我的 UI 可以得到更新。

我被严重困在其中,所以任何帮助将不胜感激。

提前致谢 :)

4

2 回答 2

1

您如何/在哪里设置代表?如果您在类方法中将委托设置为 self(其名称前有一个 + 而不是 - ... 像 + (void) doSomething),则委托将设置为类对象而不是实例对象。

对我来说这有效:

@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 回答