gpt4 book ai didi

Swift Realm - 编写一个通用的主键自增函数

转载 作者:行者123 更新时间:2023-11-28 16:04:11 25 4
gpt4 key购买 nike

所以在:

  1. How do I set a auto increment key in Realm?
  2. Realm and auto increment Behavior (Android)
  3. https://github.com/realm/realm-java/issues/469

它说,Realm 不支持主键自动递增。好的,所以我想自己添加。链接的帖子显示了执行此操作的方法。

问题:建议的解决方案需要我自己为每个模型类手动添加一个 getNextPrimaryId() 函数。这样做似乎非常愚蠢。我尝试自己用 Swift 编写一个通用类,因此我只需这样做一次,它就会自动应用于我所有的模型类,但我失败了。

尝试 1:

extension Object {
func autoIncId() -> Int {
let objects = Database.realm.objects(self).sorted("id")
// Filter the max id here and return + 1
}
}

尝试 2:

class Database {    
static func autoIncId(type: Object) -> Int {
let currentId = Database.realm.objects(type.self).map{$0.id}.maxElement ?? 0
return currentId + 1
}
}

两者都无法编译,因为“无法将类型“Object”的值转换为预期的参数类型“Object.Type””。

有谁知道如何编写自动适用于所有模型的通用函数?我只想调用 MyModelClass.autoIncId() 来获取下一个 ID。

最佳答案

假设您使用的是 Swift 3,您应该使用以下内容:

type(of: self)

但是,为什么你想要一个自增字段?如果您想要一个唯一的 key ,只需使用 UUID。当您希望您的应用程序在多个设备(例如 iPhone 和 iPad)之间同步时,自动递增字段会给您带来巨大的问题。

关于Swift Realm - 编写一个通用的主键自增函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40539269/

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