2017-03-18 9 views
1

Iveは2016 WWDCのビデオをコアデータで見て、さまざまなチュートリアルを見ました。私は、コアデータフレームワークを使ってmanagedObjectContextに永続化するオブジェクトを作成するさまざまな方法を見てきました。Swift 3コアデータ - エンティティ(コンテキスト:エンティティ:Location.entity()、insertInto:コンテキスト)

例では、私はDayをエンティティとして持っています。ユーザーがアプリケーションを使用する毎に新しいDayオブジェクトを作成したいと思います。

私が遭遇している

第一選択肢

let entity = NSEntityDescription.insertNewObject(forEntityName: "Day", into: CoreDataHelper.context) 
let object = NSManagedObject(entity: entity, insertInto: CoreDataHelper.context) 

第二オプション

let object = Day(entity: Day.entity(), insertInto: CoreDataHelper.context) 

第三オプション

let object = Day(context: CoreDataHelper.context) 

、人々は、COMを持っている他の可能性があった知っていますまた、一緒にアップします。

WWDCビデオで2番目のオプションのデモンストレーションが見られなかったので、下の2つのオプションの違いは何ですか? 3番目のオプションは自動的にmanagedObjectContextに挿入されますか、またはNSFetchedResultsControllerを使用してすべてのオブジェクトを取得するためにオブジェクトをコンテキストに挿入するためのアプローチがあるかどうかです。

+0

あなたは、あなたのDayクラスでinit()をしなければならないようです。一つのパラメータと複数のパラメータを持つものです。 –

+0

@TusharSharma Im申し訳ありませんが、あなたは何を意味するのか分かりません。私は、オブジェクトを作成し、それをCoreDataに保存する最良の方法が何であるかを明確に求めています。 – lifewithelliott

+0

訂正私はDayクラスの2つのイニシャライザを意味します。タイプNSManaedObject。?? –

答えて

3

第2のオプションはNSManagedObjectDayサブクラスの指定イニシャライザです。

第三のオプションは、オプション2

最初のオプションは無意味であるを呼び出しDayに定義されて便利な初期化です。最初の行は、第二のラインはNSEntityDescriptionを期待されているパラメータにDayインスタンスを渡すことによってDayのインスタンスを作成しようと単にオプション2および3のように、コンテキストに挿入Dayのインスタンスを作成します。私はオプション1が次のようになっていると思われます:

let entity = NSEntityDescription.entity(forEntityName: "Day", in: CoreDataHelper.context) 
let object = NSManagedObject(entity: entity, insertInto: CoreDataHelper.context) 

すべてのオプションに同じ結果があります。なぜそんなに多くのバリエーションがあるのか​​分かりません。それはアップルだけが答えることができる質問だろう。これが助けになるといいですね!

+2

ありがとうございました! – lifewithelliott

関連する問題