2016-09-23 12 views
-1

Я следую этому руководству по вводу до this tutorial и совершенно не знаком с Core Data.NSEntityDescription.insertNewObject Функция Causing Crash in Swift 3

Это класс, который производит ошибку (однако ошибка отправляет меня в первую строку приложения AppDelegate с сигабром. Линия, которая начинается «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.")  
} 

This problem looks similar, but the answer is confusing to me and seems a bit overcomplicated

Поскольку никто не разместил об этой ошибке на выше разделе комментариев 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 
+0

Вы показываете неиспользуемую часть считывания ошибок. Эта ошибка возникает из-за того, что исключение ObjC выбрасывается, поэтому должен быть выведен консольный вывод выше трассировки стека, который описывает ошибку. – rickster

+0

В Swift 3 это 'UIApplication.shared.delegate' (без круглых скобок) – vadian

+0

@vadian Я только что обновился до Xcode 8.1, и мне нужно было сделать изменение, о котором вы упомянули .. однако обновленный сделал мое предыдущее решение (перечислено как" ответ ") теперь больше не работает, и я не знаю, почему ... – PlateReverb

ответ

1

Я не 100% уверен, что решить эту проблему для меня ... но я думаю, что это может быть так просто, как мой .xcdatamodeld файл не сохраняя сущность и атрибутивных данных я вошел, и в отличие от всего в противном случае я столкнулся с этим в Xcode таким образом, мне нужно было явно сохранить (CMD + S) перед тем, как покинуть файл .xcdatamodeld, или же данные были немедленно удалены, если я нажал на ViewController или где-нибудь еще от навигатора проекта.

Я не уверен, если это ошибка только в бета-версии Xcode 8.0 я использую, но кажется, что пришло время для обновления до 8,1 ...


После обновления 8,1, указанное решение больше не работает ...


Final обновление ... Я не знаю, почему эта проблема снова появилась, но я решил его таким же образом, удалив .xcdatamodeld и сделать новый , Я также столкнулся с проблемой, потому что я сменил ее имя с Model.xcdatamodeld на CoreDataYoutube.xcdatamodeld. Если вы это сделаете, просто помните, что вам нужно обновить строку в AppDelegate: let container = NSPersistentContainer(name: "Model") для соответствия.

 Смежные вопросы

  • Нет связанных вопросов^_^