Advertisement
Guest User

Untitled

a guest
Nov 12th, 2019
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 1.82 KB | None | 0 0
  1. private func parseResponse(response: CardPOIMapper.ResponseCardPOI) -> [CardPOIMapper.PointSectionItem] {
  2.         var items: [CardPOIMapper.PointSectionItem] = []
  3.         // Группы атрибутов
  4.         var groups = [String: [String]]()
  5.         // Все возможные группы и их возможные значения
  6.         let allGroups = MetadataServices.shared.categoriesService.attributesGroup(categoryInternalName: categoryInternalName)
  7.         response.attributeValues.forEach({ [weak self](attribute) in
  8.             guard let `self` = self else { return }
  9.             if let item = CardPOIMapper.attributeValueToItem(
  10.                 categoryInternalName: self.categoryInternalName,
  11.                 internalName: attribute.key,
  12.                 value: attribute.value) {
  13.                 items = CardPOIMapper.addNewItemPOI(items: items, item: item)
  14.             } else {
  15.                 allGroups.forEach { (group) in
  16.                     if let element = group.allowedValues.first(where: { $0.key == attribute.key}) {
  17.                         // если ключ Bool и есть в наличии, то формируется список к определенной группе
  18.                         if attribute.value.value as? Bool == true  {
  19.                             let oldValue = groups[group.title] ?? []
  20.                             groups.updateValue(oldValue + [element.title], forKey: group.title)
  21.                         }
  22.                     }
  23.                 }
  24.             }
  25.         })
  26.         for group in groups {
  27.             let item = CardPOIMapper.PointSectionItem.listData(CardPOIMapper.ListDataPOI(title: group.key, items: group.value))
  28.             items = CardPOIMapper.addNewItemPOI(items: items, item: item)
  29.         }
  30.         return items.sorted(by: { $1 > $0 })
  31.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement