2016-09-23 119 views
-1

我正在按照这个介绍教程this tutorial,并且对于Core Data来说是全新的。NSEntityDescription.insertNewObject函数在Swift中导致崩溃3

下面是产生错误的类(但是错误会把我带到一个sigabrt的第一行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视频的注释部分还没有这个错误,我认为这是一个错误是由于斯威夫特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遇到过,因此我需要在离开.xcdatamodeld文件之前明确地保存(CMD + S),否则,如果我点击ViewController或项目导航器中的任何其他地方,数据立即被删除。

我不知道这是否是一个错误仅在Xcode 8.0我使用的测试版,但它似乎像它的时间更新到8.1 ...


更新到8.1,上述方案将不再有效......


最后更新......我不知道为什么这个问题又出现了,但我解决它以同样的方式,通过删除.xcdatamodeld,使一个新的。我也遇到了麻烦,因为我将它的名称从Model.xcdatamodeld更改为CoreDataYoutube.xcdatamodeld。如果你这样做,只要记住你必须更新AppDelegatelet container = NSPersistentContainer(name: "Model")以匹配。