gpt4 book ai didi

ios - Realm 迁移一对多

转载 作者:行者123 更新时间:2023-11-29 05:18:52 25 4
gpt4 key购买 nike

我需要有关迁移的帮助。

我有这个模型:

class Item: Object {
@objc dynamic var title: String = ""
@objc dynamic var done: Bool = false
}


新的迁移有两种模式:

class Item: Object {
@objc dynamic var title: String = ""
@objc dynamic var done: Bool = false
let category = LinkingObjects(fromType: Category.self, property: "items")
}


class Category: Object {
@objc dynamic var id = NSUUID().uuidString
@objc dynamic var name: String = ""
var items = List<Item>()

override class func primaryKey() -> String {
return "id"
}
}


我们无法为新商品创建新的类别,而最后的商品为孤立商品。
我必须创建一个带有“无类别”的新类别并在其中添加旧项目。

我尝试过,但没有成功:

private func zeroToOne(_ migration: Migration, _ oldSchemaVersion: UInt64) -> Void {        
let category = Category()
category.name = "No Category"

migration.enumerateObjects(ofType: Item.className()) { oldObject, newObject in
let item = Item()
item.title = newObject?["title"] as! String
item.done = newObject?["done"] as! Bool
category.items.append(item)
}
print("and migration")
}



var configuration: Realm.Configuration {
let config = Realm.Configuration(schemaVersion: 2, migrationBlock: { (migration, oldVersion) in
if oldVersion < 3 {
self.zeroToOne(migration, oldVersion)
}
})
Realm.Configuration.defaultConfiguration = config
return config
}



private func initRealm() {
do {
self.realm = try Realm(configuration: configuration)
} catch let error {
print(error.localizedDescription)
fatalError("Doenst work Realm")
}
}


预先感谢您的帮助,谢谢:)

最佳答案

我用它工作了!

 private func zeroToOne(_ migration: Migration, _ oldSchemaVersion: UInt64) -> Void {
let category = migration.create(Category.className())
category["name"] = "No Category"
category["id"] = NSUUID().uuidString
migration.enumerateObjects(ofType: Item.className()) { oldObject, newObject in
if let items = category["items"] as? List<MigrationObject>, let item = newObject {
items.append(item)
}
}
}

关于ios - Realm 迁移一对多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58882828/

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