CVaListPointer在使用objectsWhere()查询Realm数据库时

时间:2016-09-18 20:16:59

标签: ios database swift realm nspredicate

我将我的代码更新为swift 3.0。我使用Realm作为数据库。我有以下代码行:

let thisJob = Jobs.objectsWhere("identifier == '\(identify)'")

编译器抛出错误,因为需要额外的参数。 "缺少参数' args'在电话"该参数是CVaListPointer。我不确定我应该如何使用这个论点。我试过了:

let thisJob = Jobs.objectsWhere("identifier == '\(identify)'", args: CVaListPointer)

但是,该行的编译错误是"无法将CVaListPointer.Type类型的值转换为预期的参数CVaListPointer。"

1 个答案:

答案 0 :(得分:1)

Objective-C接口中的Varargs不是在Swift中导入的,这就是为什么Realm为Realm Objective-C提供了一个Swift包装器:RLMSupport.swift。将其添加到项目的源文件as described in Realm's installation instructions,您就可以使用Jobs.objectsWhere("identifier == '\(identify)'")

虽然identify可以包含在进行字符串插值时应该转义的字符,但最好将其作为格式参数传递:

Jobs.objectsWhere("identifier == %@", identify)