0
我有兩個使用Core Data實體的NSArrayControllers
,我想將對象從一個AC移動到另一個AC的某些索引(通過NSIndexSet
)。通常情況下,這很容易,但這裏並不是因爲核心數據在它之下,如果我嘗試它,它似乎會從源AC中刪除對象,但不會將它們添加到目標AC。我正在使用此代碼:CoreData:將對象從一個ArrayController移動到另一個
extension NSIndexSet
{
func toArray() -> [Int]
{
var indexes:[Int] = [];
self.enumerateIndexesUsingBlock
{
(index:Int, _) in
indexes.append(index);
}
return indexes;
}
}
func moveIndicesToTargetAC(indexSet:NSIndexSet)
{
let a = indexSet.toArray();
for i in a
{
var obj:NSManagedObject = sourceArrayController?.arrangedObjects.objectAtIndex(i) as! NSManagedObject;
targetArrayController?.addObject(obj);
sourceArrayController?.removeObjectAtArrangedObjectIndex(i);
}
}
我需要做些什麼來讓Core Data考慮刪除和添加?
不同的數組控制器使用NSManagedObjectContext的相同實例嗎?如果不是,您可能必須從其他managedObjectContext獲取具有相同managedObjectID的對象。順便說一句,不是數組控制器自己處理managedObjectContext? – Sandeep
他們使用相同的MOC。我想陣列控制器管理所有的基礎核心數據關係。我想我知道現在的問題:兩個陣列控制器管理不同種類的實體,即使它們具有相同的字段。這可能無法正常工作。 – BadmintonCat
您是否嘗試過從NSArray創建新的NSArray?在objC中,它看起來像這樣:[NSArray arrayWithArray:] –