Realm получить идентификатор сохраненной записи - PullRequest
0 голосов
/ 10 декабря 2018

Мне нужно получить идентификатор записи, которая была только что сохранена, чтобы передать информацию о переходе.

Как я могу вернуть получить идентификатор сохраненной записи?

Модель:

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

спасибо.

1 Ответ

0 голосов
/ 12 декабря 2018

Есть несколько проблем с вашим кодом.Прежде всего, вы пытаетесь сохранить объект Date в Realm вместо сохранения пользовательского объекта Month.Во-вторых, никогда не звоните commitWrite внутри транзакции write.Вам нужно звонить commitWrite, только если вы используете beginWrite, чтобы начать write транзакцию, а не realm.write с закрытием.

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"
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...