![](/img/trans.png)
[英]How do I ensure that all network calls have been made before accessing my core data model?
[英]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.