Swift:使用领域过滤记录
我是新手,需要帮助。首先,我的领域对象看起来是这样的:Swift:使用领域过滤记录,swift,realm,Swift,Realm,我是新手,需要帮助。首先,我的领域对象看起来是这样的: class RegistrationInf: Object { dynamic var RValCode = "" dynamic var RIsConfirmed = false } 我有一个PHP脚本,它返回包含验证代码的JSON数据,我使用下面的函数将其插入到Realm数据库中: func RegisterToDatabase(Valcode:String, IsConfirmed:Bool = false){
class RegistrationInf: Object {
dynamic var RValCode = ""
dynamic var RIsConfirmed = false
}
我有一个PHP脚本,它返回包含验证代码的JSON数据,我使用下面的函数将其插入到Realm数据库中:
func RegisterToDatabase(Valcode:String, IsConfirmed:Bool = false){
let loRegistrationInf = RegistrationInf()
let realm = try! Realm()
if IsConfirmed {
let loReg = realm.objects(RegistrationInf.self).filter("RValCode == \(Valcode)").first
try! realm.write {
loReg?.RIsConfirmed = IsConfirmed
}
self.loIsConfirmed = IsConfirmed
}
else {
loRegistrationInf.RValCode = Valcode
loRegistrationInf.RIsConfirmed = IsConfirmed
try! realm.write {
realm.add(loRegistrationInf)
}
}
}
然后,当用户收到包含代码的SMS时,他们输入并确认该代码,然后再次调用上述函数,只有这一次
第二个参数的值为true
当代码到达下一行时:
let loReg = realm.objects(RegistrationInf.self).filter("RValCode == \(Valcode)").first
我得到一个例外,告诉我:
由于未捕获的异常“无效值”,正在终止应用程序,原因是:“属性“RValCode”不是类型为“RegistrationIF”的对象中的链接”
我这里缺少什么?您的过滤器应该是
.filter(“RValCode==%@”,Valcode)
。此处使用Swift的字符串插值会产生无效的查询,因为字符串没有被引用(使用NSPredicate格式语法时不需要引用)。跳出的一件事是,在传递给过滤器(\u:)的谓词字符串中使用Swift的字符串插值语法(\(变量)
)
当您应该使用NSPredicate
的对象替换语法(%@
)时。如果切换到使用正确的语法(filter(“RValCode==%@”,Valcode>),是否会获得更好的结果?是的!非常感谢,谢谢你的拼写更正,我很抱歉下一次的英语不好,我会在发帖时更加小心