只获取具有特定值的任务

Fetch only tasks with a certain value

我正在制作一个待办事项应用程序,它使用 CloudKit 作为我的后端为特定团队提供任务。我已将其设置为您看到的第一个屏幕是团队列表。当您 select 团队时,我只想查看与该特定团队相关的所有任务。我已经获得了用于保存和获取任务的应用程序,但所有任务都出现在每个团队下。

我对 CloudKit(我以前用过 Parse)很陌生,对谓词也很陌生。目前,我使用 prepareForSegue 函数将团队 recordID 作为字符串传递到我的任务视图控制器。在 Parse 中,这就是我为该团队获得任务所需的全部。当我查看 CloudKit 仪表板(每个任务的记录中都有正确的团队记录 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()
    }

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

我明白了。

我还是不太明白,但它确实有效。如果有人愿意解释一下,我将不胜感激。

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

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

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

其中team是相关团队,很可能是CKReference。

迈克尔,

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

你在这里说的是我要你 return 你在 "Tasks" 数据库中的所有记录,其中团队字段等于团队变量中的值。

看在你的名字迈克尔的份上回答了问题;老实说,他在这里应该得到一些荣誉。

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