CoreData:将对象从一个ArrayController移动到另一个

时间:2015-05-04 17:46:53

标签: ios macos swift core-data nsarraycontroller

我有两个NSArrayControllers使用核心数据实体,我希望将某些索引(通过NSIndexSet)的对象从一个AC移动到另一个AC。通常情况下这很容易,但这不是因为Core Data在它之下,如果我尝试它,它似乎从源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考虑删除和添加?

1 个答案:

答案 0 :(得分:0)

感谢任何人的暗示!我通过创建目标(NSManagedObject)实体的新对象并将所有数据传输到它来解决了这个问题。这确实是一个问题,因为两个AC的核心数据实体是不同的。