我有一个班级,
@interface OnlineDataModel:TTModel< NSFetchedResultsControllerDelegate> {...
TTModel在哪里,
@interface TTModel:NSObject< TTModel> {...
OnlineDataModel类是Singleton,因此它的对象永不过期。我正在这个类中执行Fetch操作,并通过self设置fetchedResultsController的委托。现在我正在更改constanct延迟后获取的对象,只是检查它是否给出了回调,对象是否已更改以及更改是否也反映到数据库中,但是OnlineDataModel类没有接收回调,因此我的UI可以更新。
我严重陷入其中,所以任何帮助都将受到高度赞赏。
提前致谢:)
答案 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的副本。如果它是副本,那么绝对不会收到任何回叫。但它的活动对象数组比我的代码中有一些东西..你对此有何看法?