无法使用 String 类型的参数列表调用 max

Unable to invoke max with an argument list of type String

我开始尝试使用 swift 领域并遇到一些基本困难。

这是我的模型:

class Alarm: Object {
    dynamic var id: Int = 0
    dynamic var name: String!
    dynamic var date: NSDate!

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

现在我要计算 nextId 以保存一条记录。我这样写:

let nextId = realm.objects(Alarm).max("id")

但是 XCode 给我一个错误:

Cannot invoke 'max' with an argument list of type '(String)'.

我做错了什么?

let nextId = realm.objects(Alarm).max("id") as Int?

您需要告诉 Swift max() 的 return 类型在调用站点应该是什么,因为它会根据您 属性 的类型而变化字符串参数中的名称。它需要 Int? 而不仅仅是 Int 因为如果没有对象就没有最大值。