- 更新日: 2015年5月27日
- Swift & iOS
NSManagedObjectサブクラスの@objc宣言忘れでNSExceptionエラー
スポンサーリンク
Swift の CoreData / MagicalRecord を使った Xcode プロジェクトで、ビルドして実行したら以下のエラーが発生。iOS 開発で Xcode でビルドした後の実行時エラーのメッセージは、なんか分かりにくいものが多い…。
1 2 3 4 5 |
Terminating app due to uncaught exception ... ... libc++abi.dylib: terminating with uncaught exception of type NSException |
— 環境 —
Xcode 6.3.2
Swift 1.2
【お知らせ】 英単語を画像イメージで楽に暗記できる辞書サイトを作りました。英語学習中の方は、ぜひご利用ください!
スポンサーリンク
モデルのファイルに @objc の宣言を追加して解決
ぐぐりまくってたら、以下の Stack Overflow ページを発見しました。
There is a simple solution to this issue. Just add @objc(ClassName) before the swift NSManagedObject subclass.
CoreData のモデルを設定した後に作成したモデル用のファイルで、@objc の宣言を忘れていたのが原因でした。Stack Overflow のアドバイス通り、モデル用のファイルである Todo.swift で、NSManagedObject のサブクラスである Todo クラス宣言の直前に、@objc(Todo) の行を追加したら解決できました。
Todo.swift
1 2 3 4 5 6 7 8 9 |
import Foundation import CoreData @objc(Todo) // <--- 追加 class Todo: NSManagedObject { @NSManaged var item: String } |
@objc(Todo) の行が抜けていたために、NSException エラーが発生していました。追加したら解決。
スポンサーリンク
Swift は次に習得したい言語No1です!
>> 次の記事 : CoreDataが使うSQLiteの保存場所パスを確認
<< 前の記事 : Bridging Headerのファイル作成と設定を簡単に行う手順
- Swift & iOS の関連記事
- WKWebView/UIWebViewでウェブページが真っ白
- Unityのインストールと初期設定
- WKWebView/UIWebViewでNavigation Barの下にウェブページが隠れるのを回避
- SwiftでArray(配列)などをシャッフル
- Navigation Controllerで画面遷移させるSwiftコード
- Swiftでタップ/スワイプのイベント処理実装・UITapGestureRecognizerとUISwipeGestureRecognizer
- UIPageViewController画面下部のUIPageControlを非表示にする
- Swiftのバージョン確認・REPL実行
- Xcode7.0アップデートで遭遇した課題2つ
- 正規のXcodeかどうかチェック(XcodeGhostマルウェア騒動)
Leave Your Message!