2016-03-01 4 views
0

Я делаю приложение, которое имеет задачи для определенных команд, используя CloudKit в качестве моего бэкэнда. Я настроил его так, чтобы первый экран, который вы видите, это список команд. Когда вы выбираете команду, я хочу просто увидеть все задачи, связанные с этой конкретной командой. У меня есть приложение для сохранения и выбора задач, но все задачи отображаются в каждой команде.Извлечь только задачи с определенным значением

Я очень новичок в CloudKit (раньше я использовал Parse), а также новый для предикатов. В настоящее время я передаю команду recordID в виде строки, используя функцию prepareForSegue, в мой диспетчер представлений задач. В Parse это все, что мне нужно, чтобы получить только задачи для этой команды. Я вижу, что экономия работает правильно, когда я смотрю на CloudKit Dashboard (каждая задача имеет правильный идентификатор команды в своей записи).

Я знаю, что проблема находится где-то в следующем фрагменте кода, но я не уверен, как это сделать.

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

спасибо за объяснение! –