Функция NSEntityDescription.insertNewObject, вызывающая сбой в Swift 3
Я следую этому вводному руководству к этому учебному пособию, и я совершенно новичок в Core Data.
Вот класс, который выдает ошибку (однако ошибка отправляет меня на первую строку AppDelegate с sigabrt. Строка, которая начинается с "let newUser", похоже, выдает ошибку, потому что ошибка исчезает, когда я ее закомментирую.
@IBAction func btnSave(){
let appDel:AppDelegate = (UIApplication.shared().delegate as! AppDelegate)
let context:NSManagedObjectContext = appDel.persistentContainer.viewContext
let newUser = NSEntityDescription.insertNewObject(forEntityName: "Users", into: context) as NSManagedObject
do {
try context.save()
} catch {}
print("Object Saved.")
}
Эта проблема выглядит аналогично, но ответ сбивает меня с толку и кажется немного сложным
Поскольку еще никто не писал об этой ошибке в разделе комментариев выше на Youtube, я предполагаю, что это ошибка из-за изменения в Swift 3 (была другая ошибка из-за изменения в Swift 2, которое задокументировано в комментариях).
Любая помощь очень ценится!
frame #0: 0x00000001067cbf06 libsystem_kernel.dylib`__pthread_kill + 10
frame #1: 0x00000001068ec4ec libsystem_pthread.dylib`pthread_kill + 90
frame #2: 0x000000010651e0b3 libsystem_c.dylib`abort + 129
frame #3: 0x00000001067ea43a libc++abi.dylib`abort_message + 266
frame #4: 0x000000010680ea9f libc++abi.dylib`default_terminate_handler() + 267
frame #5: 0x00000001055be59f libobjc.A.dylib`_objc_terminate() + 103
frame #6: 0x000000010680bc09 libc++abi.dylib`std::__terminate(void (*)()) + 8
frame #7: 0x000000010680b894 libc++abi.dylib`__cxa_rethrow + 99
frame #8: 0x00000001055be4b7 libobjc.A.dylib`objc_exception_rethrow + 40
frame #9: 0x00000001030f7bf1 CoreFoundation`CFRunLoopRunSpecific + 433
frame #10: 0x000000010850ea48 GraphicsServices`GSEventRunModal + 161
frame #11: 0x0000000103b30e8b UIKit`UIApplicationMain + 159
* frame #12: 0x0000000102b5dc6f CoreDataYoutube`main + 111 at AppDelegate.swift:5
frame #13: 0x00000001064726bd libdyld.dylib`start + 1
1 ответ
Я не уверен на 100%, что решило эту проблему для меня... но я думаю, что это могло быть так же просто, как мой .xcdatamodeld
файл не сохранял введенные мною сущности и данные атрибутов, и, в отличие от всего, с чем я столкнулся в XCode, таким образом, мне было необходимо явно сохранить (CMD+S) перед выходом из .xcdatamodeld
файл или же данные были немедленно удалены, если я нажал на ViewController
или где-нибудь еще из навигатора проекта.
Я не уверен, что это ошибка только в бета-версии Xcode 8.0, которую я использую, но, похоже, пришло время обновить до 8.1...
После обновления до 8.1 вышеуказанное решение больше не работает...
Окончательное обновление... Я не уверен, почему проблема появилась снова, но я решил ее так же, удалив .xcdatamodeld
и сделать новый. Я также столкнулся с проблемой, потому что я изменил название Model.xcdatamodeld
в CoreDataYoutube.xcdatamodeld
, Если вы делаете это, просто помните, что вы должны обновить строку в AppDelegate
: let container = NSPersistentContainer(name: "Model")
чтобы соответствовать.