如何更新领域数据库 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
}
}
我想创建从 '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
}
}