Swift:使用Realm过滤记录

时间:2017-03-13 20:08:40

标签: swift realm

我是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'不属于“注册信息”''

类型对象中的链接

我在这里缺少什么?

1 个答案:

答案 0 :(得分:2)

您的过滤器应为.filter("RValCode == %@", Valcode)。由于字符串未被引用(在使用NSPredicate格式语法时不需要),因此在此处使用Swift的字符串插值会产生无效查询。