【问题标题】:Fetch only tasks with a certain value仅获取具有特定值的任务
【发布时间】:2016-03-03 05:03:49
【问题描述】:

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

我对 CloudKit 很陌生(我之前使用过 Parse),对谓词也很陌生。目前,我使用prepareForSegue 函数将团队记录ID 作为字符串传递给我的任务视图控制器。在 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()
    }

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

【问题讨论】:

    标签: swift predicate cloudkit


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      迈克尔,

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

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

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

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

      【讨论】:

        【解决方案3】:

        我想通了。

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

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

        【讨论】:

          猜你喜欢
          • 2021-12-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-20
          • 2021-06-30
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多