تحطمت على توفير managedObjectContext ، مع "nsinvalidargumentexception" ، ولكن فقط بشكل متقطع
-
30-09-2019 - |
سؤال
أستمر في الحصول على حوادث من حفظ: أمر على managedObjectContext. لا يفي ببيان NSLog حتى لا أرى بيان الخطأ الذي لم يتم حله ، لذلك لا يمكنني معرفة المشكلة. لا يحدث ذلك في كل مرة ، ولكن بشكل متقطع فقط.
إليك الرمز (الذي يريد أساسًا زيادة عداد):
if ([[managedObject valueForKey:@"canSee"]boolValue]){
int read = [[managedObject valueForKey:@"timesRead"] intValue] +1;
[managedObject setValue:[NSNumber numberWithInt:read] forKey:@"timesRead"];
NSError *error;
if (![resultsController.managedObjectContext save:&error]) { //<-- crashes on this line!
NSLog(@"Unresolved Core Data Save error %@, %@", error, [error userInfo]);
exit(-1);
}
في نافذة وحدة التحكم ، أحصل على رسائل مثل هذه:
2010-08-20 08:12:20.594 AppName[23501:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFSet controllerWillChangeContent:]: unrecognized selector sent to instance 0xe54f560'
أو هذا:
2010-08-20 08:12:20.594 AppName[23501:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFSet controllerWillChangeContent:]: unrecognized selector sent to instance 0xe54f560'
أو حتى هذا:
2010-08-19 23:09:59.337 AppName[761:307] Serious application error. Exception was caught during Core Data change processing. This is usually a bug within an observer of NSManagedObjectContextObjectsDidChangeNotification. -[UITableViewLabel controllerWillChangeContent:]: unrecognized selector sent to instance 0x7f0a860 with userInfo (null)
2010-08-19 23:09:59.356 AppName[761:307] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UITableViewLabel controllerWillChangeContent:]: unrecognized selector sent to instance 0x7f0a860'
بعد ذلك ، يُظهر مكدس المكالمات عند الرمي الأول ، يليه إشعار (إنهاء يسمى بعد إلقاء مثيل "nsexception" و [التبديل إلى العملية 23501] و "برنامج استلامه:" SIGABRT ".
أعتقد أن المشكلة لها علاقة بكوراتا ولكني لست متأكدًا. لقد قمت بتنظيف البناء والأهداف الخاصة بي ولا يبدو أنه يساعد. لقد حاولت قفل/فتح managedObjectContext ولا يساعد ذلك.
أي أفكار هنا حول مكان البدء في البحث عن قرار سيكون موضع تقدير كبير!
المحلول
يبدو أنك ستصدر UIViewController
وعدم إطلاقها المرتبطة بها NSFetchedResultsController
. ال NSFetchedResultsController
تحاول إخطار مندوبها (على الأرجح الخاص بك UIViewController
) من الحفظ على الخروج.
نصائح أخرى
لتوضيح إجابة ماركوس ، تحتاج إلى التأكد من أنك لا تتخلص من المندوب لصالح NSFetchedResultsController عندما تختفي وجهة نظرك:
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
self.fetchedResultsController.delegate = nil;
}