1

Я использую PFQueryTableViewController для извлечения объектов из Parse. Этот класс Parse имеет три столбца (группа, категория, клиент), которые являются указателями на другие классы Parse. Я хочу использовать параметр includeKey для ввода всех данных объекта для каждого из этих объектов-указателей. Однако, когда я запускаю приведенный ниже код, я извлекаю базовые данные о каждом столбце указателя (например, ObjectID), но ни один из дополнительных столбцов, например столбец «name» класса Category.IncludeKeys в PFQuery не возвращает все реляционные данные

override func queryForTable() -> PFQuery { 
     let query:PFQuery = PFQuery(className:self.parseClassName!) 
     query.whereKey("client", equalTo: currentUser!) 
     query.whereKey("status", equalTo: "Open") 
     query.whereKey("expires", greaterThan: NSDate()) 
     query.includeKey("group") 
     query.includeKey("category") 
     query.includeKey("client") 
     query.orderByAscending("expires") 

     if(objects?.count == 0) 
     { 
      query.cachePolicy = PFCachePolicy.CacheThenNetwork 
     } 

     return query 
    } 

Когда мой PFQueryTableViewController называет это функция cellForRowAtIndexPath, у меня есть код, чтобы получить столбец «имя» в категории объекта принес в через includeKey

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath, object: PFObject?) -> PFTableViewCell? { 
    ... 
    if let category = task["category"] as? PFObject { 
     cell?.categoryLabel.text = String(category["name"]) 
    } 
    ... 
} 

Запуск этого извлечение из категории в значение «имя» приводит к следующей ошибке и сбою в Xcode:

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Key "name" has no data. Call fetchIfNeeded before getting its value.' 

Эта же ошибка возникает, когда я пытаюсь получить доступ к любому дополнительному столбцу ns объектов ссылки указателя.

Когда я print(category) я появляюсь, чтобы получить правильный (но пустой) объект в моем журнале, без дополнительных столбцов, как «имя»:

<Category: 0x13c6ed870, objectId: mEpn6TH6Tc, localId: (null)> { 
} 

Я успешно испытанного вызова предложенных принести запрос для получения отсутствующие данные указателя для каждого столбца указателя, но (IMHO) дополнительная выборка поражает цель запроса includeKey для ограничения запросов API.

Одна мысль, которую я имел, заключалась в том, что PFQuery может разрешать только один звонок includeKey. Но исследование, которое я провел через Parse's own iOS documentation и различные сообщения разработчиков, не указывает на ограничение максимального количества includeKeys, которое может иметь запрос.

Я делаю что-то неподдерживаемое парсером или я просто синтаксически не извлекаю данные объектов каждого указателя надлежащим образом?

Я бегу последнюю ParseUI в этой публикации (1.1.6) и (1.9.0 Parse) с Xcode 7.0.1

Спасибо заранее за чтение моего поста! Я всего пару месяцев занимаюсь разработкой iOS, поэтому это одновременно интересно и разочаровывает!

ответ

1
cell.category.text = object.objectForKey("category")!.objectForKey("name") as! String 

также, использовать другую «версию» cellForRowAtIndexPath, одно для PFQueryTableViewControllers:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath, object: PFObject!) -> PFTableViewCell? { 
    //4 

    let cell = tableView.dequeueReusableCellWithIdentifier("yourCellIdentifier", forIndexPath: indexPath) as! yourCell 


     return cell 


} 

это позволяет использовать выше синтаксис, который я ответил.

+0

Переход к альтернативной 'cellForRowAtIndexPath' с' object: PFObject! 'Сделал трюк. Благодаря! – Majedian21

Смежные вопросы