我是Realm的新手,我需要帮助。首先,我的Realm对象看起来像这样:
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)
}
}
}
然后当用户收到包含代码的短信时,他们进入并确认,然后再次调用上述功能, 第二个参数的值为true。
当代码到达以下行时:
let loReg = realm.objects(RegistrationInf.self).filter("RValCode == \(Valcode)").first
我得到一个例外告诉我:
由于未捕获的异常终止应用'无效的值',原因:'属性' RValCode'不属于“注册信息”''
类型对象中的链接
我在这里缺少什么?
答案 0 :(得分:2)
您的过滤器应为.filter("RValCode == %@", Valcode)
。由于字符串未被引用(在使用NSPredicate格式语法时不需要),因此在此处使用Swift的字符串插值会产生无效查询。