在我的應用程序中,我使用了綁定到它們的每個NSArrayController
的兩個表視圖,並且陣列控制器被設置爲使用核心數據實體。生成數據時,將創建一個NSObject
,並使用obj.setValue(_:forKey:)
將值存儲在其中。在此之後,該對象僅通過ac.addObject()
添加到陣列控制器。Mac OSX - 核心數據未被存儲
這應該不足以讓Core Data負責數據的持久存儲嗎?
無論如何,如果我試圖通過調用saveAction()來保存數據,它會告訴我MOC沒有變化(moc.hasChanges = false
),所以它甚至沒有開始用這種方法保存數據。
我還需要照顧使Core Data正確存儲數據並確認更改嗎?
陣列控制器在界面生成器設置如下:
- 模式:實體名稱
- 實體名稱:
- 準備內容檢查
它們也正確綁定到託管對象上下文。
簡化,從有關我的應用程序代碼:
/* Clear existing data. */
let range:NSRange = NSMakeRange(0, arrayController.arrangedObjects.count);
let indexSet:NSIndexSet = NSIndexSet(indexesInRange: range);
arrayController.removeObjectsAtArrangedObjectIndexes(indexSet);
let array = generateData();
/* Generate data. */
for i in 0 ..< array.count
{
let data = array[i];
/* Create new data object. */
var obj:NSObject = arrayController.newObject() as! NSObject;
obj.setValue(data.name, forKey: "name");
obj.setValue(data.type, forKey: "type");
obj.setValue(data.category, forKey: "category");
/* Add it to the array controller's contentArray. */
arrayController.addObject(obj);
}
UPDATE:
它看起來像我的應用程序實例4個MOCS當它啓動。我懷疑我如何將它們添加到兩個陣列控制器的Storyboard中是錯誤的。我向兩個表視圖控制器(也包含它們的數組控制器)添加了一個NSObject,並將它們的基類設置爲我的CoreDataDelegate
(這是我的核心數據代碼類,通常位於AppDelegate
)。我懷疑這是創建多個實例CoreDataDelegate
的地方。問題是:我應該怎麼做,以便陣列控制器可以達到我的CoreDataDelegate
類?
你創建一個'NSObject'?顯示代碼 – Wain
我的代碼稍微複雜一點,可以分成幾個類,但我會嘗試做一個組合的例子... – BadmintonCat
我已經添加了代碼示例。 – BadmintonCat