CoreData:将对象从一个 ArrayController 移动到另一个
CoreData: Move objects from one ArrayController to another
我有两个 NSArrayControllers
使用核心数据实体,我想将某些索引处的对象(通过 NSIndexSet
)从一个 AC 移动到另一个。通常这很容易,但在这里不是因为核心数据在它下面,如果我尝试它,它似乎从源 AC 中删除了对象,但没有将它们添加到目标 AC。我正在使用此代码:
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 处理增删改查?
感谢任何人的提示!我通过创建目标 (NSManagedObject) 实体的新对象并将所有数据传输给它解决了这个问题。这确实是一个问题,因为两个AC的核心数据实体是不同的。
我有两个 NSArrayControllers
使用核心数据实体,我想将某些索引处的对象(通过 NSIndexSet
)从一个 AC 移动到另一个。通常这很容易,但在这里不是因为核心数据在它下面,如果我尝试它,它似乎从源 AC 中删除了对象,但没有将它们添加到目标 AC。我正在使用此代码:
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 处理增删改查?
感谢任何人的提示!我通过创建目标 (NSManagedObject) 实体的新对象并将所有数据传输给它解决了这个问题。这确实是一个问题,因为两个AC的核心数据实体是不同的。