仅获取具有特定值的任务

时间:2016-03-01 22:35:07

标签: swift predicate cloudkit

我正在制作一个应用程序,该应用程序具有使用CloudKit作为我的后端的特定团队的任务。我已经进行了设置,以便您看到的第一个屏幕是团队列表。当您选择团队时,我想看到与该特定团队相关的所有任务。我已经获得了保存和获取任务的应用程序,但所有任务都显示在每个团队下。

我是CloudKit的新手(之前我使用过Parse),也是谓词的新手。目前,我使用prepareForSegue函数将团队recordID作为字符串传递给我的任务视图控制器。在Parse中,我只需要为该团队完成任务。我可以看到,当我查看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()
    }

所以我想我正在问如何使用谓词来过滤数据,只显示所选团队的任务。我只有我目前拥有的东西,因为我遵循了教程。

3 个答案:

答案 0 :(得分:1)

不是传递当前谓词,而是使用以下内容:

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

团队是相关团队,可能是CKReference。

答案 1 :(得分:1)

迈克尔,

谓词就像一个正则表达式。你熟悉正则表达式吗?如果你是,那么你会发现谓词是一块蛋糕。

您在这里的所有说法是,我希望您返回“任务”数据库中的所有记录,其中团队字段等于团队变量中的值。

你的名字,迈克尔回答了这个问题;说实话,他应该得到一些荣誉。

希望这个简短的解释有所帮助!

答案 2 :(得分:0)

我明白了。

我还没有完全理解它,但它确实有效。如果有人愿意解释这一点,我将不胜感激。

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