Swift 域获取已保存记录的ID

Swift 域获取已保存记录的ID,swift,realm,Swift,Realm,我需要获取刚刚保存的记录的id,以便在segue上传递信息 如何返回以获取保存的记录的id 型号: class Month: Object { @objc dynamic public private(set) var id = "" @objc dynamic public private(set) var month = Date() @objc dynamic public private(set) var beg:Int = 0 override class

我需要获取刚刚保存的记录的id,以便在segue上传递信息

如何返回以获取保存的记录的id

型号:

class Month: Object {

    @objc dynamic public private(set) var id = ""
    @objc dynamic public private(set) var month = Date()
    @objc dynamic public private(set) var beg:Int = 0

override class func primaryKey() -> String {
    return "id"
}
作者写道:

static func addMonthToRealm(month: Date, beg: Int) {

do {
     let realm = try Realm( )
     try realm.write {
     realm.add(month)
        try realm.commitWrite()
      }
    } catch {
       debugPrint("Error adding run to realm!")
    }
}
使用swift 4.2和Realm 3.1


谢谢。

您的代码有几个问题。首先,您试图将
日期
对象保存到
领域
,而不是保存自定义的
月份
对象。其次,不要在
write
事务中调用
commitWrite
。如果使用
beginWrite
启动
write
事务,而不是使用
realm.write
关闭,则只需调用
commitWrite

static func addMonthToRealm(date: Date, beg: Int) -> String? {
    let month = Month()
    month.month = date
    month.beg = beg    
    do {
        let realm = try Realm( )
        try realm.write {
            realm.add(month)
        }
        return month.id
    } catch {
       debugPrint("Error adding run to realm!")
       return nil
    }
}
您还需要修改
Month
对象定义以生成唯一的
id

class Month: Object {

    @objc dynamic public private(set) var id = UUID().uuidString
    @objc dynamic public private(set) var month = Date()
    @objc dynamic public private(set) var beg:Int = 0

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

如何以及何时生成
id
?感谢您的评论。我的“月”不是日期,而是对象的名称。我的名字不好-对不起。事实上,我一直保留着它。我还在init()中设置了唯一ID。self.id=UUID().uuistring.lowercased()。我希望这没问题。我想我是从Realm网站上得到这个方法的?仍然不知道如何在保存后获取ID。我正在抓取最后一个添加文件?干杯。@diogenes从你的问题代码中得知这实际上是一个
日期
。我已经更新了我的答案,以便
addMonthToRealm
函数返回添加的
Month
对象的
id
,或者在无法添加的情况下返回
nil
。您可以简单地使用这个返回值。