2016-03-01 39 views
0

我正在做一個應用程序,該應用程序具有使用CloudKit作爲後端的特定團隊的任務。我已經設置好了,所以你看到的第一個屏幕是球隊列表。當您選擇團隊時,我只想看到與特定團隊相關的所有任務。我已經獲得了應用程序來保存和獲取任務,但所有任務都顯示在每個團隊的下面。只提取具有特定值的任務

我對CloudKit(我之前使用過Parse)並且對謂詞也很陌生。目前我使用prepareForSegue函數將團隊recordID作爲字符串傳遞給我的任務視圖控制器。在解析中,這就是我只需要獲得該團隊的任務所需要的。當我查看CloudKit Dashboard時(每個任務的記錄中都有正確的團隊記錄ID),我可以看到保存工作正常。

我知道問題出現在下一段代碼中,但我不確定如何去做。

func loadTasks() { 
     tasks = [CKRecord]() 
     let query = CKQuery(recordType: "Tasks", predicate: NSPredicate(format: "TRUEPREDICATE", argumentArray: nil)) 
     publicData.performQuery(query, inZoneWithID: nil) { (results:[CKRecord]?, error:NSError?) -> Void in 
      if let tasks = results { 
       self.tasks = tasks 
       dispatch_async(dispatch_get_main_queue(), {() -> Void in 
        self.tableView.reloadData() 
       }) 
      } 
     } 


     self.refreshControl?.endRefreshing() 
    } 

所以我想問如何使用謂詞來過濾數據,只顯示選定團隊的任務。我只有我目前所擁有的,因爲我遵循了一個教程。

回答

1

不是傳遞當前斷言的,使用的線沿線的東西:

let predicate = NSPredicate(format: "team == %@", team) 
    let query = CKQuery(recordType: "Tasks", predicate: predicate) 

哪裏隊是相關團隊,這很可能是一個CKReference。

0

我想通了。

我不太瞭解它,但它的工作原理。如果有人願意解釋這一點,我將不勝感激。

let query = CKQuery(recordType: "Tasks", predicate: NSPredicate(format: "team==%@", self.team)) 
1

Michael,

謂詞就像一個正則表達式。你熟悉正則表達式嗎?如果你是,那麼你會發現謂詞小菜一碟。

您在這裏所說的是我希望您返回您在「任務」數據庫中的所有記錄,其中團隊字段等於團隊變量中的值。

你的名字清酒邁克爾回答了這個問題;說實話,他在這裏值得一些榮譽。

希望這個簡短的解釋幫助!

+0

感謝您的解釋! –