Swift 域获取已保存记录的ID
我需要获取刚刚保存的记录的id,以便在segue上传递信息 如何返回以获取保存的记录的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
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
。您可以简单地使用这个返回值。