Загрузка и сортировка данных JSON для эффективного поиска - PullRequest
0 голосов
/ 29 августа 2018

Я хочу взять что-то вроде следующих отформатированных данных JSON и взять то, что находится в списке аксессуаров человека, и иметь возможность поиска по типу аксессуара и заставить его вернуть список тех, у кого есть аксессуар. Хотел бы я как-то использовать встроенную в Swift функцию , содержащую , поэтому мне не нужно создавать цикл for для поиска? Нужно ли создавать новые списки с именами для каждого типа аксессуаров и добавлять к ним имена пользователей? Как можно это сделать? Я действительно не уверен, как подойти к этому.

[
  {
    "name": "John",  
    "Accessories":["watch","necklace"]
  },
  {
    "name": "James",
    "Accessories":["watch","ring"]
  }
]

1 Ответ

0 голосов
/ 29 августа 2018

Вы можете использовать Decodable протокол в Swift 4. Сначала вам нужно будет создать класс, который определяет ваши JSON объекты

class MyNewClass: Decodable {
    //Make sure your variable names match the keys in your JSON response
    var name: String!
    var Accessories: [String]!
}

Когда вы получите ответ JSON, используйте следующие строки для декодирования данных JSON в массив объектов класса и фильтрации этого массива на основе критериев поиска

do {
    let objects = try JSONDecoder().decode([MyNewClass].self, from: data)
    let people = obj.filter({ $0.Accessories.contains("WHATEVER") }).map{ $0.name }
    //Here you should have an array of people's name that have that accessory
} catch {error
    print(error)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...