2016-06-19 5 views
0

新しいentity()メソッドは、魔法の文字列を避けるのに役立ちます。 managedObjectModel.entitiesByName["foo"]のようなものではなく、Foo.entity()と言うことができます。iOS 10/macOSでnew entity()メソッドを呼び出すときのEXC_BAD_ACCESS Sierra Coreのデータ

問題は私のテストでは常にEXC_BAD_ACCESSを投げます。私はNSPersistentStoreを設定しており、すべてが正しく設定されていることを確認するためにテストクエリを実行しました。

洞察?このメソッドを呼び出すための前提条件は何ですか?

答えて

1

セットアップに何か問題があります。

Xcodeを開き、新しいプロジェクトを開始し、「マスター/詳細」を選択して、「コアデータ」をチェックします。 MasterViewControllerでは、どこでもこの行を挿入します。

print("The entity is ", Event.entity(), ".") 

あなたはそれが箱から出して動作することを確認できます。モデルエディタで、Eventエンティティを検査すると、オプション "Codegen"が "Class Definition"に設定されていることに注意してください。

+0

セットアップに問題はないことが分かります。私の答えは、私にはバグのようなにおいがありますが、私が持っていた難しさと解決方法を要約しています。 –

1

NSPersistentStoreを初期化してloadPersistentStoresを呼び出すだけでは不十分であることが判明しました。 managedObjectModelプロパティを明示的にまたは暗黙的に少なくとも1回は使用しなければなりません。ほとんどの場合、遅延ロードが原因です。

私は仮にこれをバグと見なします。 entity()メソッドはおそらくこれをフードの下で行うべきですが、他の考慮事項があるかもしれません。

+0

興味深い。過去にCore Dataがどのように機能していたかを考えると、これは全く驚くべきことではありません。しかし、この新しい方法は、(a)他のいくつかの変更を介して作業するか、(b)(a)が不可能な場合に意味のあるエラーメッセージを与えるべきです。私はそれもバグと考えています。 –

関連する問題