簡體   English   中英

如何將陣列控制器綁定到核心數據模型?

[英]How do I bind my Array Controller to my core data model?

我是SWIFT編程的新手,正在嘗試制作一個簡單的應用程序,以學習使用核心數據並將其綁定到應用程序中進行顯示。 我看過很多例子,但似乎都舊了。 我正在使用XCode 9。

我從帶有Core Data的MacOS Cocoa應用開始。 我有一個名為“鍛煉”的簡單實體,具有4個屬性,日期,秒,運動和rpe。

然后,我在視圖控制器場景下添加了一個數組控制器。 我添加了一個Table視圖,該視圖將Array Controller設置為數據源。 我添加了用於添加和刪除按鈕的鏈接,這些鏈接指向數組控制器的add和remove方法。

我認為我現在要做的就是將陣列控制器綁定到我的核心數據模型的managedObjectContext。 這可以在AppDelegate中找到。 但是,當我選擇“陣列控制器”並轉到“綁定”並選擇“參數”時,綁定到的唯一選項是“視圖控制器”和“共享用戶默認控制器”。 我已經選擇了View Controller,但是無法找出要鏈接到我的數據模型的Model Key Path。

我覺得我一定缺少明顯的東西。 我覺得必須有一種方法可以綁定到AppDelegate或從視圖控制器綁定到模型鍵路徑,但我也找不到。 任何幫助,不勝感激。

在基於情節提要的項目中,沒有從視圖控制器到AppDelegate類的(綁定)引用。

一種解決方案是添加屬性並覆蓋init?(coder視圖控制器中的init?(coder

@objc let managedObjectContext: NSManagedObjectContext

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

然后將ManagedObjectContext綁定到ViewController > managedObjectContext

不要忘記在陣列控制器的屬性檢查器中將“ Mode設置為“ Entity Name ,插入實體名稱並選中“ Prepares Content

要修復[<Core_Data_Binding.ViewController 0x6080000c4600> valueForUndefinedKey:]: this class is not key value coding-compliant for the key managedObjectContext更改的[<Core_Data_Binding.ViewController 0x6080000c4600> valueForUndefinedKey:]: this class is not key value coding-compliant for the key managedObjectContext let managedObjectContext: NSManagedObjectContext ManagedObjectContext let managedObjectContext: NSManagedObjectContext vadian代碼中的let managedObjectContext: NSManagedObjectContext更改為@objc let managedObjectContext: NSManagedObjectContext 默認情況下,XCode 9不會向目標C公開屬性和方法: 不贊成在Swift 4模式下使用Swift 3 @objc推論嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM