gpt4 book ai didi

ios - CoreData - 复制现有对象

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:53:41 25 4
gpt4 key购买 nike

您好,我想从我的核心数据数据库中复制一个对象。现在我正在使用

        movement2 = [NSEntityDescription
insertNewObjectForEntityForName:@"Movement"
inManagedObjectContext:self.managedObjectContext];

movement2.name = movement.name;
movement2.value = movement.value;
movement2.date = movement.date;
...

并且有效。但是……

有没有办法在一行代码中将movement的所有值复制到movement2

最佳答案

NSManagedObject 与 NSObject 不同,它提供了一个 API 来迭代其属性和关系。或者,更确切地说,它是实体描述。不过,它不是单线的。

movement2 = [NSEntityDescription insertNewObjectForEntityForName:@"Movement" 
inManagedObjectContext:self.managedObjectContext];
NSEntityDescription *entity = [movement entity];
for (NSString *propertyName in [entity propertiesByName]) {
[movement2 setValue:[movement valueForKey:propertyName] forKey:propertyName];
}

参见 the documentation了解更多详情。

这足以克隆大部分对象。如果数据库结构正确,则以这种方式复制关系,它们的反向关系也会更新。因此,如果您的 Movement 与 MovementDirection 有关系,并且 MovementDirection 具有反向一对多关系 parentMovements,则此 parentMovements 集将同时具有 movementmovement2 在你调用上面的代码之后。

关于ios - CoreData - 复制现有对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9344064/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com