如何更新领域数据库 swift 上的现有值?

How to update existing value on realm database swift?

我想创建从 'false' 到 'true' 的任何行,反之亦然,具体取决于 table 视图执行了 select 和执行了 deselect 方法。这意味着我需要更新现有值。怎么做。我的代码不工作它正在创建另一行而不是更新现有的行。

这是table

这是模型

import UIKit
import RealmSwift

class TodoData: Object {

    @objc dynamic var todos: String = String()
    @objc dynamic var times: String = String()
    @objc dynamic var rows: Bool = Bool()

}

这是我为更新现有行的值而编写的代码:

    let data = TodoData()

            do {
                try realm.write {
                    data.rows = true
                    realm.add(data)
                }
            } catch let error as NSError {
                print(error.localizedDescription)
            }

您的代码没有更新现有数据。它正在创建一个新的 ToDoData 并插入它。

您想要获取现有 ToDoData 并在 write 中更新。这是一个例子。

let todos = "a"
guard let data = realm.objects(ToDoData.self).filter("todos == %@", todos).first else { return }
try! realm.write {
    data.rows = true
}

如果你真的想:

I want to make any row from 'false' to 'true' or vice versa

这是使所有假行为真,所有真行为假的代码。

let toDoResults = realm.objects(TodoData.self)
for toDo in toDoResults {
    try! realm.write {
        toDo.rows = !toDo.rows
    }
}

不过我认为,当用户在您的 tableView 中进行更改时,您只想切换一行。

let selectedTodo = "a"
let results = realm.objects(TodoData.self).filter("todos == %@", selectedTodo)
if let thisTodo = results.first {
   try! realm.write {
      thisTodo.rows = !thisTodo.rows //will toggle from t to f and from f to t
   }
}