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:] –