Как захватить ObjectId из объекта в parse и представить его как строку в swift

Почему я не могу представить «ObjectId» из объекта из parse как String в swift, хотя это, естественно, уже строка? Вот логика, которую я пытаюсь вам использовать:

//MARK: Fetch ObjectId Strings From Parse func fetchObjectIdString() { let query = PFQuery(className: "Books") query.whereKey("genreName", equalTo: self.genreName) query.findObjectsInBackgroundWithBlock { (objects, error) -> Void in if error == nil { if let objects = objects as [PFObject]! { for oneObj in objects { let ObjectIdFromParse = oneObj["objectId"] as! String let SingleObjectId = SixthBook() SingleObjectId.objectIdString = ObjectIdFromParse self.arrayOfObjectId.append(SingleObjectId) } } } else { // Log details of the failure print("Error: \(error!) \(error!.userInfo)") } } } 

Это отлично подходит для всех других строковых столбцов для моих объектов разбора, кроме ObjectId. Он генерирует ошибку исключения каждый раз. Почему это?

Используйте oneObj.objectId вместо того, что вы пробовали в приведенном выше коде.

Измените строку, чтобы let ObjectIdFromParse = oneObj["objectId"] as! String let ObjectIdFromParse = oneObj["objectId"] as! String в

let ObjectIdFromParse = oneObj.objectId as! String

Из документации Parse по PFObjects

objectId , createdAt и updatedAt предоставляются как свойства для каждого PFObject, поэтому вы не индексируете их с помощью [""] , а вместо этого достигаете их через .objectId , .createdAt , .updatedAt на свой объект.

Вам также не нужно принуждать downcast к String, поскольку objectId всегда является String (как вы упомянули). Но вам нужно развернуть необязательный (говоря, что вы знаете, что этот объект существует). Поэтому правильная строка кода должна быть:

 let ObjectIdFromParse = oneObj.objectId! 
  • Скрыть или отключить панель поиска в CNContactPickerViewController
  • Интегрируйте Swift в экспортированный проект Unity вместо использования Objective C?
  • Относитесь к UIButton как UILabel в cellForRowAtIndexPath
  • Обновление элемента в CoreData не обновляет tableView
  • Можно ли изменить размер раздела с анимацией в IGListSectionController?
  • Сделайте действие, когда кнопка отмены поискаBar
  • Ошибки восстановления / сброса данных ядра
  • Как предотвратить главу главы таблицы табуляции во время прокрутки?
  • Как добавить программные ограничения для UISegmentedControl
  • Преобразовать обратные вызовы делегатов на события SignalProducer?
  • Использование панели навигации в контроллере панели вкладок
  • Давайте будем гением компьютера.