无法在if语句中设置查询?

时间:2016-06-03 04:59:46

标签: swift if-statement cloudkit ckrecord

基本上我试图在当前表控制器中设置一个特定的查询,具体取决于从前一个表控制器获取的indexpath.row值。例如,

        if indexpath1 == 1 
        {
        let query = CKQuery(recordType: "American", predicate: predicate)
        }
        else
        {
        let query = CKQuery(recordType: "Bistro", predicate: predicate)
        }

        publicDatabase.performQuery(query, inZoneWithID: nil) { (results, error) -> Void in

但是,performquery函数会出现“使用未解析的标识符”查询“。

我是否需要在if语句之前将查询设置为一个值,以作为根据if语句更改的基值?或者我无法完成这个逻辑?

1 个答案:

答案 0 :(得分:0)

这是一个基本的范围问题,你在if中创建了一个本地查询实例,但是在这个世界上没有任何好处。

var query: CKQuery
if indexpath1 == 1 {
        query = CKQuery(recordType: "American", predicate: predicate)
        }
        else
        {
        query = CKQuery(recordType: "Bistro", predicate: predicate)
        }

        publicDatabase.performQuery(query, inZoneWithID: nil) { (results, error) -> Void in

或者更优雅一点:

let recordType = indexpath1 == 1 ? "American" : "Bistro"
let query = CKQuery(recordType: recordType, predicate: predicate)
publicDatabase.performQuery(query, inZoneWithID: nil) { (results, error) -> Void in {
    //...
}