提问人:bp zhang 提问时间:9/27/2023 更新时间:9/27/2023 访问量:48
有一个问题,我想在 Swift 中查询 realm 中的所有数据,然后在那里
there is an question, i want query all data from realm in Swift and there
问:
这是一个问题,我想在 Swift 中读取 realm 中的所有数据,并抛出一个错误EXC_BAD_ACCESS(code=1, address=0xfffffffffffffff8) 但是我可以插入数据,请帮我找到问题所在
static func customJudge(content: String, mobile: String) -> String {
do {
let realm = try! Realm()
let ruleInfo = RuleModel()
ruleInfo.content = "123"
ruleInfo.actionType = "提醒"
ruleInfo.clickType = "abc"
ruleInfo.id = Int(Date().timeIntervalSince1970)
try realm.write {
realm.add(ruleInfo)
}
let resultList = realm.objects(RuleModel.self)
if !resultList.isEmpty {
print("is not null")
} else {
print("is null")
}
} catch {
print("exception is :\(error)")
}
return ""
}
let resultList = realm.objects(RuleModel.self) 此行出现错误: EXC_BAD_ACCESS (code=1, address=0xfffffffffffffff8)
我想查询所有数据
答:
-1赞
vks
9/27/2023
#1
当存在内存访问问题时,通常会发生错误EXC_BAD_ACCESS。 就您的情况而言,问题可能与您管理 Realm 实例的方式有关。
确保你用来获取数据的 Realm 实例仍然有效并且没有被解除分配是至关重要的。
你可以修改代码的版本来确保正确的 Realm 管理:
static func customJudge(content: String, mobile: String) -> String {
do {
let realm = try Realm()
let ruleInfo = RuleModel()
ruleInfo.content = "123"
ruleInfo.actionType = "提醒"
ruleInfo.clickType = "abc"
ruleInfo.id = Int(Date().timeIntervalSince1970)
try realm.write {
realm.add(ruleInfo)
}
// Make sure you have a valid Realm instance here
let anotherRealm = try Realm()
let resultList = anotherRealm.objects(RuleModel.self)
if !resultList.isEmpty {
print("is not null")
} else {
print("is null")
}
} catch {
print("exception is: \(error)")
}
return ""
}
在这段代码中,我创建了一个单独的 Realm 实例 (anotherRealm),用于在写入数据库后获取数据。这应该有助于避免与访问可能已失效的 Realm 实例相关的任何问题。
请确保还检查数据模型 (RuleModel) 并确保它与数据库架构匹配。数据模型的问题有时也会导致意外崩溃。
评论
0赞
Jay
9/28/2023
虽然所有答案都值得赞赏,但此答案中的代码并没有真正解决问题......但更重要的是,Realm var 将保持在单个函数的范围内。例如,它不会在函数范围内失效。一旦领域被实例化,它在整个函数中都有效。这就像说,然后在函数的某个点,x 必须再次设置为 1,因为它超出了范围 - 这显然不会发生。这意味着在任何给定函数中,只需创建一个领域一次。let x = 1
评论
static
func
try!
do:catch
!
is not null
RuleModel