【发布时间】:2019-08-28 13:15:56
【问题描述】:
我已将一个新模型对象添加到我的领域对象中,并且我正在尝试将数据从我的旧领域对象属性移动到这个新对象。
在旧架构中,我有以下内容:
class Item: Object {
@objc dynamic var image = ""
@objc dynamic var coverImage = ""
@objc dynamic var video = ""
}
在新架构中,我添加了一个名为 media 的新属性 所以现在看起来这个
class Item: Object {
@objc dynamic var image = ""
@objc dynamic var coverImage = ""
@objc dynamic var video = ""
@objc dynamic var media: Media?
}
我还添加了这个新的模型对象:
class Media: Object {
@objc dynamic var fullImage = ""
@objc dynamic var thumbnailImage = ""
@objc dynamic var video = ""
var item = LinkingObjects(fromType: Item.self, property: "media")
}
我的目标是将数据从旧的 Item 对象移动到新的 Media 对象。
我试图做这样的事情,但我不知道如何迁移该链接对象,任何正确方向的帮助将不胜感激。
Realm.Configuration.defaultConfiguration = Realm.Configuration(
schemaVersion: 1,
migrationBlock: { migration, oldSchemaVersion in
if (oldSchemaVersion < 1) {
// enumerate first object
migration.enumerateObjects(ofType: Item.className()) { oldItem, newItem in
let image = oldItem?["image"] as! String
let coverImage = oldItem?["coverImage"] as! String
let video = oldItem?["video"] as! String
//migrate second object
migration.enumerateObjects(ofType: Media.className(), { (oldMedia, newMedia) in
})
}
}
})
【问题讨论】:
-
您的意思是用 Media 对象替换 Item 对象?如果是这样,则字段名称不同,并且您的 Media 对象链接回 Item 对象,因此如果删除 Item 对象,那将是一个问题。此外,您的 Media 对象没有 coverImage 属性等。您能澄清一下吗?
-
@Jay 不,我没有用 Media 对象替换 Item 对象,我在 Item 对象中添加了一个新属性“media”,它是对 Media 对象的引用。我想使用 Media 对象来存储“图像”“视频”等并将它们与 Item 对象分开。当用户更新应用程序时,我想将值从 Item 对象传输到新的 Media 对象。
标签: swift database migration realm realm-mobile-platform