-1

我正在关注本教程的介绍教程并且对 Core Data 完全陌生。

这是产生错误的类(但是错误将我发送到带有 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.")    
}

这个问题看起来很相似,但答案让我感到困惑,似乎有点过于复杂

由于尚未在上述 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
4

1 回答 1

2

我不是 100% 确定是什么为我解决了这个问题......但我认为它可能就像我的.xcdatamodeld文件没有保存我输入的实体和属性数据一样简单,并且与我迄今为止在 Xcode 中遇到的所有其他内容不同,我需要在离开文件之前明确保存(CMD+S),否则如果我从项目导航器中.xcdatamodeld单击或其他任何地方,数据将立即被删除。ViewController

我不确定这是否只是我正在使用的 Xcode 8.0 测试版中的错误,但似乎是时候更新到 8.1 了……


更新到 8.1 后,上述解决方案不再有效...


最终更新......我不确定为什么问题再次出现,但我以同样的方式解决了它,删除.xcdatamodeld并制作一个新的。我也遇到了麻烦,因为我把它的名字从 改成Model.xcdatamodeldCoreDataYoutube.xcdatamodeld. 如果您这样做,请记住您必须更新AppDelegate:中的行let container = NSPersistentContainer(name: "Model")以匹配。

于 2016-09-23T19:04:34.093 回答