2016-09-23 123 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")以匹配。