NSFetchedResultscontroller在NSObject类中未收到回调

时间:2010-09-23 20:12:16

标签: iphone objective-c callback nsfetchedresultscontroller nsfetchrequest

我有一个班级,

  

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

TTModel在哪里,

  

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

OnlineDataModel类是Singleton,因此它的对象永不过期。我正在这个类中执行Fetch操作,并通过self设置fetchedResultsController的委托。现在我正在更改constanct延迟后获取的对象,只是检查它是否给出了回调,对象是否已更改以及更改是否也反映到数据库中,但是OnlineDataModel类没有接收回调,因此我的UI可以更新。

我严重陷入其中,所以任何帮助都将受到高度赞赏。

提前致谢:)

2 个答案:

答案 0 :(得分:1)

您如何/在何处设置代理?如果在类方法中将委托设置为self(具有其名称的+前面而不是 - ...像+(void)doSomething),则委托被设置为类对象而不是实例对象。

对我来说这很有效:

@implementation MyViewController

...

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

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

...

@end

请发布您的控制器创建代码:)

答案 1 :(得分:0)

在我发布代码之前,我对某些事情有疑问,请先看下面的代码

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

此代码是否导致从FetchedResultController触发任何事件,我猜fetchedObjects返回Array的副本。如果它是副本,那么绝对不会收到任何回叫。但它的活动对象数组比我的代码中有一些东西..你对此有何看法?