1. ホーム
  2. ios

[解決済み] NSManagedObjectの特定のサブクラスを見つけることができません。

2022-06-02 04:10:22

質問

Core Dataを使ったアプリを開発中です。を使ってインスタンスを作成したところ

let entity = NSEntityDescription.entityForName("User", inManagedObjectContext: appDelegate.managedObjectContext)
let user = User(entity: entity, insertIntoManagedObjectContext: appDelegate.managedObjectContext)

ログに警告が表示されました。

CoreData: warning: Unable to load class named 'User' for entity 'User'.  Class not found, using default NSManagedObject instead.

どうすれば直るのでしょうか?

また、もう一つの質問ですが、NSManagedObjectのサブクラスでインスタンスメソッドを定義するにはどうしたらよいでしょうか。

編集してください。

以下のスクリーンショットのように、エンティティのクラスを指定しました。

どのように解決するのですか?

Xcode 7 (最終版) に対応しました。 (Xcode 6とXcode 7の初期のベータリリースのように)クラスへのモジュール名のプリペンドは、もはや必要ありません。 Apple のドキュメントでは コアデータマネージドオブジェクトサブクラスの実装 が更新されました。 それに合わせて更新されました。

データモデルインスペクタ には、エンティティに対して 2 つのフィールド "Class" と "Module" が追加されました。

エンティティの Swift 管理オブジェクトのサブクラスを作成するときに Module" フィールドは "Current Product Module" に設定され、この設定によってインスタンスの作成はメインアプリケーションとユニットテストの両方で機能します。 に設定され、この設定でインスタンスを作成すると、メインアプリケーションとユニットテストの両方で機能します。 管理対象オブジェクトのサブクラスは ではなく でマークされていなければなりません。 @objc(classname) (で観察されました。 https://stackoverflow.com/a/31288029/1187415 ).

あるいは フィールドを空にし ("None" と表示されます)、管理対象オブジェクトのサブクラスに 管理オブジェクトのサブクラスを @objc(classname) でマークします (これは で https://stackoverflow.com/a/31287260/1187415 ).


備考 この回答は、もともとXcode 6用に書かれたものです。 この問題に関して、さまざまな Xcode 7 のベータ版リリースでいくつかの変更がありました。 この問題に関して、いくつかの変更がありました。この回答は、多くの人に受け入れられ 私は、現在のXcode 7最終版の状況を要約してみました。 現在のXcode 7の最終版についてです。

私は自分自身の "research" を行い、この質問と同様の質問の両方に対するすべての回答を読みました。 CoreData: 警告。という名前のクラスを読み込むことができません。 . というわけで、たとえ私が具体的に挙げなかったとしても、すべての人に帰属します。 ということです。


前回の回答 Xcode 6 :

で説明されているように コアデータマネージドオブジェクトサブクラスの実装 で説明されているように、あなたは のように、モデルエンティティインスペクタの Class フィールドのエンティティクラス名の前に、モジュールの名前、たとえば "MyFirstSwiftApp.User" を付けなければなりません。