只获取具有特定值的任务
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" 数据库中的所有记录,其中团队字段等于团队变量中的值。
看在你的名字迈克尔的份上回答了问题;老实说,他在这里应该得到一些荣誉。
希望这个简短的解释对您有所帮助!
我正在制作一个待办事项应用程序,它使用 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" 数据库中的所有记录,其中团队字段等于团队变量中的值。
看在你的名字迈克尔的份上回答了问题;老实说,他在这里应该得到一些荣誉。
希望这个简短的解释对您有所帮助!