你好,我正在尝试使用以下代码更改realm中名为'book'的对象的变量'category':
alert.addAction(UIAlertAction(title: "Reading", style: .default, handler: { (_) in
try! realm.write {
let category = "reading"
let book = Book()
book.category = category
}
}
当我在mangoDB realm studio中检查时,对象类别还没有更新。我看过的教程使用了相同的函数。以下是完整的更新代码:
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
func showmethisfunction() {
let realm = try! Realm()
let boook = Book()
let alert = UIAlertController(title: "Want to put your book in a list?", message: "Please Select an Option", preferredStyle: .actionSheet)
alert.addAction(UIAlertAction(title: "Read", style: .default, handler: { (_) in
try! realm.write
{
boook.category = "read"
}
}))
alert.addAction(UIAlertAction(title: "Want to read", style: .default, handler: { (_) in
try! realm.write {
boook.category = "wanttoread"
}
}))
alert.addAction(UIAlertAction(title: "Reading", style: .default, handler: { (_) in
try! realm.write {
let category = "reading"
boook.category = category
}
}))
alert.addAction(UIAlertAction(title: "Dismiss", style: .cancel, handler: { (_) in
print("User click Dismiss button")
}))
self.present(alert, animated: true, completion: {
print("completion block")
})
}
showmethisfunction()
}
我用一个类似的警报控制器来手动添加一本书,这是有效的,但当我想从一本书中添加一个变量时,它就不起作用了
3条答案
按热度按时间toe950271#
首先得到你可以更新的对象。我给出了使用过滤器的例子。你可以使用任何一个。
或通过此链接获取想法https://docs.mongodb.com/realm-legacy/docs/swift/latest/index.html#models
转到上述链接中自动更新对象部分
我在更新您的问题后更新了我的答案。请将
let boook = Book()
行替换为let boook = realm.objects(Book.self).first ?? Book()
行pb3s4cty2#
重申一下这个问题:
如何更新现有对象的属性
有许多不同的方法可以做到这一点,其中一些答案取决于对象模型。
一般来说,大多数对象都有一个唯一的标识符,称为 * 主键 *,如果您知道该标识符,那么更新对象就是一个简单的过程
ObjectId将在示例化每个对象时为其生成unique _id。
这假定要更新的现有对象的主键为“1”,并将对象的name属性更新为Jay 2
您还可以通过主键读入对象,然后对其进行更新
最后,您还可以运行一个查询来获取具有匹配属性 an 对象(但不要这样做)
最后一个选项通常有点“危险”,因为它将过滤所有名称为“Jay”的PersonClass对象,结果将是无序的,因此
first
在不同的时间可能是不同的...所以这里的关键是“不要这样做”。作为上述内容的补充说明,除非指定
.sorted(byKeyPath:
,否则realm结果是无序的。a64a0gku3#
您可以更新现有对象,而无需在RealmSwift中创建主键。
1.创建领域对象的键。
导入基金会导入RealmSwift
最终类ModelRealM:对象{
}
1.在ViewController中创建类型为(var arrData:结果!)
课堂聊天VC:UI视图控制器{
设聊天虚拟机=聊天虚拟机()
让realm = try!Realm()来尝试
变量arrData:结果出来了!
}
1.视图中模型更新功能用于更新
类聊天虚拟机{
}