#ios #swift #core-data
#iOS #swift #основные данные
Вопрос:
Когда я пытаюсь вставить ряд данных с помощью CoreData, он случайным образом выходит из строя с этим сообщением об ошибке:
2019-04-03 17:24:31.217510 0530 YOUR APP[8862:401750] [error] error: Serious application error. Exception was caught during Core Data change processing. This is usually a bug within an observer of NSManagedObjectContextObjectsDidChangeNotification. -[__NSCFSet addObject:]: attempt to insert nil with userInfo (null)
CoreData: error: Serious application error. Exception was caught during Core Data change processing. This is usually a bug within an observer of NSManagedObjectContextObjectsDidChangeNotification. -[__NSCFSet addObject:]: attempt to insert nil with userInfo (null)
2019-04-03 17:24:31.223609 0530 YOUR APP[8862:401750] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFSet addObject:]: attempt to insert nil'
*** First throw call stack:
(
0 CoreFoundation 0x0000000107c371bb __exceptionPreprocess 331
1 libobjc.A.dylib 0x00000001071dd735 objc_exception_throw 48
2 CoreFoundation 0x0000000107c37015 [NSException raise:format:] 197
3 CoreFoundation 0x0000000107c128da -[__NSCFSet addObject:] 202
4 CoreData 0x00000001068cbb2b -[NSManagedObjectContext(_NSInternalChangeProcessing) _processPendingUpdates:] 379
5 CoreData 0x00000001068c632b -[NSManagedObjectContext(_NSInternalChangeProcessing) _processRecentChanges:] 1163
6 CoreData 0x000000010689ee8a _performRunLoopAction 394
7 CoreFoundation 0x0000000107b9bc27 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ 23
8 CoreFoundation 0x0000000107b960be __CFRunLoopDoObservers 430
9 CoreFoundation 0x0000000107b96751 __CFRunLoopRun 1537
10 CoreFoundation 0x0000000107b95e11 CFRunLoopRunSpecific 625
11 GraphicsServices 0x000000011160a1dd GSEventRunModal 62
12 UIKitCore 0x000000010c90a81d UIApplicationMain 140
13 YOUR APP 0x0000000104e23031 main 225
14 libdyld.dylib 0x000000010b419575 start 1
15 ??? 0x0000000000000001 0x0 1
)
libc abi.dylib: terminating with uncaught exception of type NSException
Я не могу выяснить причину сбоя, но этот сбой происходит в 1/3 раза, когда вставка / извлечение происходит в core data.
Пожалуйста, найдите код ниже
public func insertUser(userList: [user], completion : (Bool) -> ()){
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let context = appDelegate.persistentContainer.viewContext
do {
let userEntity = NSEntityDescription.entity(forEntityName: "User_Table", in: context)
for user in userList {
let userBrandName = NSManagedObject(entity: userEntity!, insertInto: context)
userBrandName.setValue(id, forKey: "Identity")
userBrandName.setValue(name, forKey: "Name")
.....
userBrandName.setValue(discount, forKey: "Discount")
try context.save()
}
completion(true)
} catch {
completion(false)
}
}
Я не могу найти проблему / причину, стоящую за этим. Я новичок в Swift и Core Data
Комментарии:
1. Почему бы не сохранять в конце цикла for, а не каждый раз?
2. Вы должны поместить
try context.save()
после завершения цикла3. @Larme Я тоже пробовал это, но все еще получаю ту же ошибку / сбой
4. @PrashantTukadiya это был мой первоначальный код, который все еще разбился.. Затем я попробовал это
5. У вас есть наблюдатель для этого уведомления? «Обычно это ошибка в наблюдателе NSManagedObjectContextObjectsDidChangeNotification».