我有一個存儲日期的CoreData實體Tracker
。 該應用程序收到通知,並且CheckListViewController
在CoreData中輸入數據長達13天,因此當CheckListViewController被取消時,CoreData實體Tracker
將被填充13行。CoreData在向其中添加數據後被清空
在MainViewController
(其中駁回CheckListViewController
),我有以下代碼:現在
- (void)dataSaved {
self.checkListVC dismissViewControllerAnimated:YES completion:^{
// fetching all the data from 'Tracker' entity and doing NSLog on it
// all data gets logged in console without any issues
}];
}
,在我的代碼的某個地方後,我從實體Tracker
獲取所有數據,但返回的數據爲空。 CoreData不顯示任何錯誤,它只是返回空數組。
編輯: 代碼從CoreData
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:ENTITY];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"date" ascending:NO];
[request setSortDescriptors:@[sortDescriptor]];
request.predicate = (fromDate && toDate) ? [NSPredicate predicateWithFormat:@"date >= %@ AND date <= %@", fromDate, toDate] : nil;
__block NSArray* fetchedHabits;
[managedObjectContext performBlockAndWait:^{
NSError *error = nil;
fetchedHabits = [managedObjectContext executeFetchRequest:request error:&error];
if (error) NSLog(@"Unknown error occurred while fetching results from CoreData, %@ : %@", error, [error userInfo]);
}];
CoreData模型獲取結果:
更新1: 因此,大家可以看到有兩個實體,即Habit
和Tracker
。當我從Habit
獲取結果時,它一切正常,但是當我嘗試從Tracker
獲取結果時,它給了我一個空數組。我有一個共同的NSManagedObjectContext
實例,因爲您可以使用單個managedObjectContext
來管理多個CoreData實體。 我檢查了managedObjectContext.persistentStoreCoordinator.managedObjectModel.entitiesByName
,它也列出了兩個實體。
更新2: 代碼,我在將數據添加到Tracker
TrackerCoreData *tracker = [NSEntityDescription insertNewObjectForEntityForName:ENTITY
inManagedObjectContext:managedObjectContext];
tracker.date = date;
tracker.habits = habits;
// saving CoreData explicitly
NSError *error = nil;
[managedObjectContext save:&error];
你可以顯示代碼如何在Coredata中保存對象。 – aahsanali
添加提取碼 – nefarianblack
很高興看到您用來保存對象的代碼。 – Firo