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>),是否会获得更好的结果?是的!非常感谢,谢谢你的拼写更正,我很抱歉下一次的英语不好,我会在发帖时更加小心