Hallo liebe Entwicklergemeinde,
wiedermal bin ich an meine doch sehr schnell erreichenden Grenzen gestoßen und hoffe auf Tipps von euch....
Ich habe in meiner App einen TabBarController und jede Tab verweist auf eine TableView!
Ebenso greife ich auf Daten zurück, die via. CoreData gespeichert werden.
Soweit funktioniert das ganze auch ganz gut. Nun habe ich aber vor in den verschiedenen Views, verschiedene Daten aus dem selben CoreData Model zu laden.
Dies mache ich mit einem Predicate im fetchedResultsController wie folgt:
TableView 1 (Anzeige von Daten die größer sind als actualDate):
TableView 2 (Anzeige von Daten die kleiner sind als actualDate):
In meiner AppDelegate habe ich folgende navigationController eingebunden:
Leider erhalte ich aber, meines Erachtens willkürlich, folgende Fehlermeldung wenn ich die App im Simulator teste (wenn ich jeweils die zweite TableView im TabBar anklicke, Reihenfolge ist egal):
FATAL ERROR: The persistent cache of section information does not match the current configuration. You have illegally mutated the NSFetchedResultsController's fetch request, its predicate, or its sort descriptor without either disabling caching or using +deleteCacheWithName:
2011-10-18 21:34:20.287 eLearning[18370:bc03] fetch request = (entity: LearningObjects; predicate: (remindDate > CAST(340659260.285595, "NSDate")); sortDescriptors: ((
"(remindDate, ascending, compare:)"
)); batch size: 20; type: NSManagedObjectResultType; )
2011-10-18 21:34:20.289 eLearning[18370:bc03] cached objects were: (
" (entity: LearningObjects; id: 0x4d80a00 ; data: {\n firstLearningObject = gonna;\n remindDate = \"2011-10-18 11:17:57 +0000\";\n secondLearningObject = \"going to\";\n})"
)
2011-10-18 21:34:20.290 eLearning[18370:bc03] fetched objects are: (
" (entity: LearningObjects; id: 0x5942210 ; data: {\n firstLearningObject = overdue;\n remindDate = \"2011-10-25 19:25:22 +0000\";\n secondLearningObject = \"\\U00fcberf\\U00e4llig\";\n})"
)
2011-10-18 21:34:20.292 eLearning[18370:bc03] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'FATAL ERROR: The persistent cache of section information does not match the current configuration. You have illegally mutated the NSFetchedResultsController's fetch request, its predicate, or its sort descriptor without either disabling caching or using +deleteCacheWithName:'
*** Call stack at first throw:
Hieraus interpretiere ich nun das ich ein Problem habe, da ich auf einen fetchedResultsController mit unterschiedlichen Predicates zugreife!?
Nun die eigentliche Frage.... Was mache ich falsch?
Liegt es daran das ich immer auf den selben fetchedResultsController zugreife und das Predicate verändere, oder muss ich im AppDelegate jeweils andere managedObjectContext anlegen? Oder....???
Ich danke wie schon so häufig für eure Mühe im Voraus....
lipdila
wiedermal bin ich an meine doch sehr schnell erreichenden Grenzen gestoßen und hoffe auf Tipps von euch....
Ich habe in meiner App einen TabBarController und jede Tab verweist auf eine TableView!
Ebenso greife ich auf Daten zurück, die via. CoreData gespeichert werden.
Soweit funktioniert das ganze auch ganz gut. Nun habe ich aber vor in den verschiedenen Views, verschiedene Daten aus dem selben CoreData Model zu laden.
Dies mache ich mit einem Predicate im fetchedResultsController wie folgt:
TableView 1 (Anzeige von Daten die größer sind als actualDate):
TableView 2 (Anzeige von Daten die kleiner sind als actualDate):
In meiner AppDelegate habe ich folgende navigationController eingebunden:
Quellcode
- RootViewController *rootViewController = (RootViewController *)[navigationController topViewController]; rootViewController.managedObjectContext = self.managedObjectContext; RootViewController *rootViewControllerReminderList = (RootViewController *)[navigationControllerReminderList topViewController]; rootViewControllerReminderList.managedObjectContext = self.managedObjectContext; RootViewController *rootViewControllerLearnedList = (RootViewController *)[navigationControllerLearnedList topViewController]; rootViewControllerLearnedList.managedObjectContext = self.managedObjectContext; ...... ...... ...... [self.window addSubview:tabBarController.view]; [self.window makeKeyAndVisible];
Leider erhalte ich aber, meines Erachtens willkürlich, folgende Fehlermeldung wenn ich die App im Simulator teste (wenn ich jeweils die zweite TableView im TabBar anklicke, Reihenfolge ist egal):
FATAL ERROR: The persistent cache of section information does not match the current configuration. You have illegally mutated the NSFetchedResultsController's fetch request, its predicate, or its sort descriptor without either disabling caching or using +deleteCacheWithName:
2011-10-18 21:34:20.287 eLearning[18370:bc03] fetch request = (entity: LearningObjects; predicate: (remindDate > CAST(340659260.285595, "NSDate")); sortDescriptors: ((
"(remindDate, ascending, compare:)"
)); batch size: 20; type: NSManagedObjectResultType; )
2011-10-18 21:34:20.289 eLearning[18370:bc03] cached objects were: (
" (entity: LearningObjects; id: 0x4d80a00 ; data: {\n firstLearningObject = gonna;\n remindDate = \"2011-10-18 11:17:57 +0000\";\n secondLearningObject = \"going to\";\n})"
)
2011-10-18 21:34:20.290 eLearning[18370:bc03] fetched objects are: (
" (entity: LearningObjects; id: 0x5942210 ; data: {\n firstLearningObject = overdue;\n remindDate = \"2011-10-25 19:25:22 +0000\";\n secondLearningObject = \"\\U00fcberf\\U00e4llig\";\n})"
)
2011-10-18 21:34:20.292 eLearning[18370:bc03] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'FATAL ERROR: The persistent cache of section information does not match the current configuration. You have illegally mutated the NSFetchedResultsController's fetch request, its predicate, or its sort descriptor without either disabling caching or using +deleteCacheWithName:'
*** Call stack at first throw:
Hieraus interpretiere ich nun das ich ein Problem habe, da ich auf einen fetchedResultsController mit unterschiedlichen Predicates zugreife!?
Nun die eigentliche Frage.... Was mache ich falsch?
Liegt es daran das ich immer auf den selben fetchedResultsController zugreife und das Predicate verändere, oder muss ich im AppDelegate jeweils andere managedObjectContext anlegen? Oder....???
Ich danke wie schon so häufig für eure Mühe im Voraus....
lipdila