NSEntityDescription
は、管理対象オブジェクトの一部ではありません。管理対象オブジェクトモデルの一部です。
データモデルを読み込むと、そこに含まれるすべてのエンティティの説明が読み込まれます。クラスメソッド+entity
は、エンティティ記述がモデルオブジェクトとともに作成されたために機能します。このメソッドをと呼び出そうとすると、モデルがロードされる前にがObjective-Cにnil
を返します。 (何らかの理由でSwiftでは何も返されないので、ゼロではありませんが、使用するとアプリがクラッシュします)。
+entityForName:inManagedObjectContext:
、あなたが言ったように。ただし、そのメソッドのドキュメントを参照してください。
指定された管理対象オブジェクトコンテキストの永続ストアコーディネーターに関連付けられた管理対象オブジェクトモデルから、指定された名前のエンティティを返します。
したがって、このメソッドは管理対象オブジェクトのコンテキスト引数を取りますが、それでも管理対象オブジェクトモデルを使用しています。コンテキストを使用してモデルを検索しています。取得するオブジェクトはコンテキストに関連付けられていないため、基礎となるデータモデルに関連付けられています。
これらの2つの方法は同じように安全です。あなたのコードで一番うまく動作するものを使用してください。
どの言語とiOSバージョンですか? (タグを追加してください) – shallowThought
コンテキストを指定せずにNSManagedObjectを作成できる方法はわかりません。エンティティは、NSManagedObjectが作成されたコンテキストに関係していると思います。 – Spads
これはクラスメソッドであるため、NSManagedObjectに関連付けられていません。 – vib