我有一個DataManager類返回的共享實例:核心數據的iOS 8今天的Widget問題
+ (DataManager *)sharedInstance;
{
static DataManager *sharedInstance = nil;
static dispatch_once_t pred;
dispatch_once(&pred, ^{
sharedInstance = [[DataManager alloc] init];
});
return sharedInstance;
}
在這裏我把我的managedObjectContext,managedObjectModel,persistentStoreCoordinator的軌道。
我也有,我拉出來的物品顯示的方法:
- (NSArray *)getItems
{
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Item"];
return [[self managedObjectContext] executeFetchRequest:fetchRequest error:nil];
}
現在我的主要應用程序我有一個視圖控制器,當我把這種getItems然後分別修改項目。因此,例如設置item.itemName = @「testName」;然後調用我的保存方法。
我也有一個iOS 8,在我的TodayViewController中,我也調用getItems方法。我有一個NSNotification檢測managedObjectContext保存。
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(refetchItems) name:NSManagedObjectContextDidSaveNotification object:[[DataManager sharedInstance] managedObjectContext]];
這些被重新調取的項目不會被調用,但會返回過期的NSManagedObjects。因此,例如,itemName並未更改爲@「testName」。
我哪裏錯了?如果您需要查看其他代碼,請告知我們。
謝謝!
你的應用程序,你運行的小部件在不同的過程。如果您的應用更改了核心數據存儲,那麼您的小部件將不會收到該應用發送的通知。 – quellish 2014-09-19 01:54:56
@quellish然後檢測變化的最佳方式是什麼? – Stephen 2014-09-19 08:10:26
我有完全相同的問題,但還沒有找到解決方案。只有我能想到,就是「去創造」背景並重新創造它。 – 2014-09-20 17:11:30