- 更新日: 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マルウェア騒動)
 

画像付き英語辞書 Imagict | 英単語をイメージで暗記





Leave Your Message!