gpt4 book ai didi

ios - Realm.write被跳过

转载 作者:行者123 更新时间:2023-12-01 16:31:46 25 4
gpt4 key购买 nike

我正在使用Realm并尝试对TableView中的单元格进行重新排序。我觉得奇怪的行为是,有时它的工作方式完全符合我的要求(它正确地更新了Realm中的数据),但有时却行不通:

myRealm.write {

它不会进入此块。使用断点,我可以看到它跳过了整个块,并直接转到该块的末尾。因此,即使它提供了tableView已重新排序的视觉外观,但在Realm中却没有重新排序。

我应该注意,我在Realm的表中使用一列作为命令来存储命令。另外,标签是我要订购的表领域的数组
override func tableView(tableView: UITableView, moveRowAtIndexPath sourceIndexPath: NSIndexPath, toIndexPath destinationIndexPath: NSIndexPath) {

//update when you move a row up
if sourceIndexPath.row > destinationIndexPath.row {
let lowerbound = destinationIndexPath.row
let upperbound = sourceIndexPath.row
do{
let myRealm = try Realm()

myRealm.write {

let labelAtSource = self.labels![upperbound]
labelAtSource.order = lowerbound

for i in lowerbound...upperbound-1{
let label = self.labels![i]
label.order = i+1
}
}
}catch { }
}else{ //when you move a row down
let lowerbound = sourceIndexPath.row
let upperbound = destinationIndexPath.row
do{
let myRealm = try Realm()

myRealm.write {

let labelAtSource = self.labels![lowerbound]
labelAtSource.order = upperbound

for i in lowerbound+1...upperbound{
let label = self.labels![i]
label.order = i-1
}
}
}catch { }
}
}

最佳答案

您正在do-catch块中调用引发初始化器Realm(),而根本没有任何错误处理。我猜这失败了。
我宁愿建议使用try!,而不是捕获错误并让它未经处理就消失,这会在此处导致运行时错误。

但是,然后,您还应该确保至少在开始之前至少访问过一次Realm,以避免此时担心架构迁移/验证失败。通常,只有在开发期间才能看到默认域设置以后仍会发生的大多数错误,例如当浏览器附加到模拟器文件时。

关于ios - Realm.write被跳过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31333321/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com