首页 > 解决方案 > 核心数据自定义迁移策略

问题描述

我在迁移核心数据时遇到问题 我想将快捷方式卡关系传输到我的每个 ShortcutItmes 我想在快捷方式项中创建新的卡关系并将快捷方式的卡关系传输到快捷方式具有的每个快捷方式项 我应该怎么做?

Shortcut
  title: String
  items -->> ShortcutItems
  card --> Card

ShortcutItems:
  title: String
  amount:Int
  shortcut --> Shortcut

changing it to >

shortcut:
  title: String
  items --> ShortcutItems

ShortcutItems:
  title:string
  amount:Int
  card --> Card  * this should inherit shortcut's card relation 
  shortcut --> Shortcut

我不知道如何迁移这个核心数据结构任何想法?我已经尝试过了,但找不到访问快捷方式的 Items 值以根据旧快捷方式卡值将新值插入其新创建的卡关系的方法

class ShortcutToShortcutMappingModelMigrationPolicy_v1_to_v2:NSEntityMigrationPolicy {
    override func createDestinationInstances(forSource sInstance: NSManagedObject, in mapping: NSEntityMapping, manager: NSMigrationManager) throws {
        if sInstance.entity.name == "Shortcut" {
            let card = sInstance.value(forKey: "card")
            let name = sInstance.primitiveValue(forKey: "title")
            let shortcutItems = sInstance.primitiveValue(forKey: "items")
            
            
            let newShortcut = NSEntityDescription.insertNewObject(forEntityName: "Shortcut", into: manager.destinationContext)
            newShortcut.setValue(name, forKey: "title")
//            newShortcut.setValue(shortcutItems, forKey: "items")
            
            manager.associate(sourceInstance: sInstance, withDestinationInstance: newShortcut, for: mapping)
        }
    }
}

我怎样才能使用这个 createDestinationInstances 方法!?

标签: iosswiftsqlitecore-datacore-data-migration

解决方案


推荐阅读