2016-09-23 8 views
-1

私はこの紹介チュートリアルをthis tutorialに従っており、Core Dataを完全に新しくしています。NSEntityDescription.insertNewObject関数Swiftでクラッシュを引き起こす3

ここでは、エラーを生成するクラスです(ただし、エラーは、sigabrtを使用してAppDelegateの最初の行に送られます)。「let newUser」で始まる行は、コメントしたときにエラーが消えるためです誰もが上記のYouTubeの動画のコメント欄でこのエラーについて投稿していないのでアウト。

@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

まだ、私はこれはスウィフト3の変化による誤差であると仮定し(原因別のエラーが発生しましたコメントに記載されているスイフト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またはProject Navigator以外の場所をクリックしてもデータはすぐに消去されました。

にアップデートした後


私はこれが唯一のXcode 8.0のベータ版ではエラーであれば私が使用しているわからないんだけど、それは8.1にアップデートする時が来たようにそれはそう...

8.1、上記の溶液は、もはや作品...


最終更新問題が再び現れ、なぜ...私はわからないんだけど、私は.xcdatamodeldを削除し、新しいものを作ることによって、それを同じ方法で解決しました。また、私はそれをModel.xcdatamodeldからCoreDataYoutube.xcdatamodeldに変更したので、問題に遭遇しました。これを行う場合は、一致するようにAppDelegatelet container = NSPersistentContainer(name: "Model")の行を更新する必要があることを覚えておいてください。

関連する問題