2017-09-21 10 views
0

SWIFTプログラミングの新機能で、コアデータを使用してアプリケーションに表示するためにバインドするための簡単なアプリケーションを作成しようとしています。私は多くの例を見てきましたが、すべてが古くなっているようです。私はXCode 9で働いています。アレイコントローラをコアデータモデルにバインドする方法を教えてください。

私はCore Dataを持つMacOS Cocoaアプリを使い始めました。私は日付、秒、スポーツとrpeの4つの属性を持つ "ワークアウト"と呼ばれる単純なエンティティを持っています。

次に、ビューコントローラシーンの下にアレイコントローラを追加しました。私はアレイコントローラをデータソースとして設定するテーブルビューを追加しました。私はボタンを追加して、アレイコントローラへのリンクを追加したり削除したりしてメソッドを追加したり削除したりしました。

私が今必要とするのは、アレイコントローラを自分のコアデータモデルのmanagedObjectContextにバインドすることだけです。これはAppDelegateにあります。しかし、アレイコントローラを選択してBindingsに行き、Parametersを選択すると、バインドするオプションはView ControllerとShared User Defaults Controllerだけです。私はView Controllerを選択しましたが、データ・モデルにリンクするModel Key Pathを把握することはできません。

私は何かが明らかに欠けているに違いないと感じています。 View ControllerからAppDelegateまたはModel Key Pathにバインドする方法が必要だと思っていますが、どちらもわかりません。どんな助けでも大歓迎です。

答えて

1

ストーリーボードベースのプロジェクトでは、ビューコントローラーからAppDelegateクラスへの(バインディング)参照はありません。 >managedObjectContext -

次いで、溶液をViewControllerManagedObjectContextに結合性を追加し、ビューコントローラにinit?(coder

@objc let managedObjectContext: NSManagedObjectContext 

required init?(coder: NSCoder) { 
    self.managedObjectContext = (NSApp.delegate as! AppDelegate).persistentContainer.viewContext 
    super.init(coder: coder) 
} 

をオーバーライドすることです。

アレイコントローラのアトリビュートインスペクタでModeEntity Nameに設定することを忘れないで、エンティティ名を挿入してPrepares Contentにチェックしてください。

+0

このような迅速な対応に感謝します。私はAppDelegateがmanagedObjectContextパラメータを持たないため、次のコードをView Controllerに配置しました:必要なinit(コーダ:NSCoder){ self.managedObjectContext =(NSApp.delegate as AppDelegate).persistentContainer.newBackgroundContext() super。 init(コーダー:コーダー) } [ valueForUndefinedKey:]:このクラスはキーmanagedObjectContextのキー値コーディングに準拠していません。 –

+0

答えを更新して、 'NSPersistentContainer'構文を検討し、KVCの問題 – vadian

+0

を修正しました。私は.newBackgroundContextを(使用していたとしてザッツはこれが私のプロジェクト –

0

[<Core_Data_Binding.ViewController 0x6080000c4600> valueForUndefinedKey:]: this class is not key value coding-compliant for the key managedObjectContext変更点let managedObjectContext: NSManagedObjectContextをバディアンコードで@objc let managedObjectContext: NSManagedObjectContextに修正します。 XCode 9では、デフォルトでObjective Cにプロパティとメソッドが公開されていません。 The use of Swift 3 @objc inference in Swift 4 mode is deprecated?

+0

おかげで間違っていたものを探すの日後に私を救ったという.viewContext –

関連する問題