3

NSObjectControllerコア データと一緒に for バインディングを使用する方法の簡単な例を見つけるのに 1 日以上を費やしました。すべての例はバインディングNSArrayControllers付きです。NSTableView

NSObjectControllerデータを自動的に保存およびフェッチするために、コアデータを使用してシンプルに設定するにはどうすればよいですか? 文字列属性を持つエンティティをテキスト フィールドにバインドしたいとします。これはどのように行うのでしょうか?

4

1 に答える 1

6

Interface builder の基本は次のとおりです。

  1. nstextfieldを (オブジェクト ライブラリから) ビューにドラッグします。

  2. nsobjectcontroller(同様に)の上にドラッグします。

  3. バインディング インスペクタを開きます。Option-Cmd-7 または View/Utilities/BindingsInspector.

  4. 上記を選択しますnsobjectcontroller。BindingsInspector 内では、下部近くに ManagedObjectContext のパラメーターがあります。[Bind to] の横にあるチェックボックスをクリックします。次に、File'sOwner を (ドロップダウンから) 選択します。File's Owner はおそらく NSDocument です。ModelKeyPath を managedObjectContext に設定します (小文字の 'm' に注意してください)。

  5. Utility ビューを AttributesInspector (Open-Cmd-4) に切り替えます。モードを「クラス」から「エンティティ」に設定します。BusinessObject の名前またはモデル名を入力します。「従業員」など。

  6. 新しい を選択しますnstextfield。BindingsInspector で、「Value」を選択します。「バインド先」にチェックマークを付け、上記をnsobjectcontroller(ドロップダウンから) 選択します。

  7. CONTROLLER KEY では、「選択」を選択します。

  8. MODEL KEY PATH には、"name" などのモデル属性 (リレーションシップではありません) を選択します。

次に、2 つ目のコントローラーである nsarraycontroller を追加して実験します。属性ではなく、関係にバインドされます。したがって、配列には複数の「Content Set」があり、単数の「Content」はありません。すべての属性が NSObject のサブクラスであるのに対し、関係が基礎となる NSSet を持っていることは何の価値もありません。int なし、float。しかし、NSNumber、NSString.

  1. 新しい nsarraycontroller を選択します。コンテンツ セットで [バインド先] を選択します。最初の nsobjectcontroller を選択します。CONTROLLER KEY は「selection」ですが、MODEL KEY PATH は「employees」などの関係名です。

  2. 複数の列を持つ NSTableView を設定します。(テーブルには、セット内のアイテムを収容する多くの行と、エンティティ内のさまざまな属性を収容する列があります)

  3. 表の列を 1 つ選択します。[バインド先] を選択し、nsarraycontroller を選択します。

  4. 今回の CONTROLLER KEY は「arrangedObjects」(選択ではありません) です。MODEL KEY PATH は、「name」のような単純な属性名です。

NSNumber と NSDate は NSFormatters を優先するので、それらを (オブジェクト ライブラリから) nstextfield またはテーブル列にドラッグして、数値と日付を適切な文字列に変換します。

于 2013-06-04T18:47:07.357 に答える