Ios 将属性Double更改为List的领域迁移中的强制转换错误<;CustomObject>;
我需要的是创建一个迁移,以便基于以下代码将Ios 将属性Double更改为List的领域迁移中的强制转换错误<;CustomObject>;,ios,swift,realm,database-migration,realm-migration,Ios,Swift,Realm,Database Migration,Realm Migration,我需要的是创建一个迁移,以便基于以下代码将discount:Double更改为discounts:List() 这是现有对象:这就是我的领域对象现在的样子。 以下是我如何尝试做出改变 新对象: 具有一对多关系的修改对象。 类项:对象{ @objc dynamic var itemName:String=“Some Name” 让折扣=列表() } 迁移 Realm.Configuration.defaultConfiguration=Realm.Configuration( 阴谋厌恶:3, m
discount:Double
更改为discounts:List()
这是现有对象:这就是我的领域对象现在的样子。
以下是我如何尝试做出改变
新对象:
具有一对多关系的修改对象。
类项:对象{
@objc dynamic var itemName:String=“Some Name”
让折扣=列表()
}
迁移
Realm.Configuration.defaultConfiguration=Realm.Configuration(
阴谋厌恶:3,
migrationBlock:{migration,oldSchemaVersion in
if(oldschemaversation<3){
enumerateObjects(类型:Item.className()){oldObject,newObject in
将oldDiscount=oldObject![“折扣”]设为!双倍
让折扣=折扣()
折扣。金额=旧折扣
让折扣=新对象![“折扣”]作为!列表
折扣。附加(折扣)
}
}
})
我得到一个错误:
无法将RealmSwift.List(0x1c8910068)
类型的值强制转换为RealmSwift.List(0x1c890f6a0)
同样,问题是,我如何创建一个迁移来将折扣:Double
更改为折扣:List()
?您可以将折扣属性迁移到新的折扣列表中,就像[oldDiscount]一样
这是密码。我重新命名了一些对象,使其更加清晰,因为重复使用“折扣”一词来指代类和属性是令人困惑的
let vers = UInt64(1)
let config = Realm.Configuration( schemaVersion: vers, migrationBlock: { migration, oldSchemaVersion in
if (oldSchemaVersion < vers) {
print("performing migration")
migration.enumerateObjects(ofType: ItemClass.className()) { oldItem, newItem in
let oldDiscount = oldItem!["discount"] as? Double ?? 0.0
let d = DiscountClass()
d.name = "Test"
d.discount = oldDiscount
newItem!["discountList"] = [d]
}
} else {
print("no migration needed")
}
})
let-vers=UInt64(1)
让config=Realm.Configuration(schemaVersion:vers,migrationBlock:{migration,oldSchemaVersion in
if(oldSchemaVersion
class Discount: Object {
@objc dynamic var name:String = "Discount Name"
@objc dynamic var discount:Double = 0.0
}
class Item:Object{
@objc dynamic var itemName:String = "Some Name"
let discounts = List<Discount>()
}
Realm.Configuration.defaultConfiguration = Realm.Configuration(
schemaVersion: 3,
migrationBlock: { migration, oldSchemaVersion in
if (oldSchemaVersion < 3) {
migration.enumerateObjects(ofType: Item.className()) { oldObject, newObject in
let oldDiscount = oldObject!["discount"] as! Double
let discount = Discount()
discount.amount = oldDiscount
let discounts = newObject!["discounts"] as! List<Discount>
discounts.append(discount)
}
}
})
let vers = UInt64(1)
let config = Realm.Configuration( schemaVersion: vers, migrationBlock: { migration, oldSchemaVersion in
if (oldSchemaVersion < vers) {
print("performing migration")
migration.enumerateObjects(ofType: ItemClass.className()) { oldItem, newItem in
let oldDiscount = oldItem!["discount"] as? Double ?? 0.0
let d = DiscountClass()
d.name = "Test"
d.discount = oldDiscount
newItem!["discountList"] = [d]
}
} else {
print("no migration needed")
}
})