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

Unable to set query inside if-statement?

基本上,我试图根据从以前的 table 控制器获取的 indexpath.row 值在当前 table 控制器中设置特定查询。例如,

        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 函数随"use of unresolved indentifier "查询一起出现。

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

这是一个基本的范围问题,您在 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 {
    //...
}