автоматически создавать объекты массивов в Swift - PullRequest
0 голосов
/ 23 марта 2020

У меня есть список, который я хочу разделить в соответствии с атрибутами, которые я хочу получить. Например. Если у меня есть этот список, я хочу создать 3 разных списка, используя основной список.

  var companiesf = [
    Directory(directoryId: 1, fullname: "Jose Luis", company: "A"), 
    Directory(directoryId: 2, fullname: "Fernando", company: "A"), 
    Directory(directoryId: 3, fullname: "Maria", company: "B"), 
    Directory(directoryId: 4, fullname: "Rodrigo", company: "B"),
    Directory(directoryId: 5, fullname: "Miguel", company: "C")
  ]

Наконец, я хочу получить этот результат

 var listA = [
     Directory(directoryId: 1, fullname: "Jose Luis", company: "A"), 
     Directory(directoryId: 2, fullname: "Fernando", company: "A")
   ]


   var listB = [
    Directory(directoryId: 3, fullname: "Maria", company: "B"), 
    Directory(directoryId: 4, fullname: "Rodrigo", company: "B")
   ]


   var listC = [
    Directory(directoryId: 5, fullname: "Miguel", company: "C")
   ]

, но я не знаю, как для автоматического создания объектов массива

Большое спасибо!

1 Ответ

0 голосов
/ 23 марта 2020

Вы можете создать массивы своей компании, создав сгруппированный словарь

let groupedByCompany = Dictionary(grouping: companiesf, by: {$0.company})

, а затем создать из него свои массивы

let listA = grouped["A", default: []]
let listB = grouped["B", default: []]
let listC = grouped["C", default: []]

другой вариант - использовать filter

let listA = companiesf.filter {$0.company == "A"}
let listB = companiesf.filter {$0.company == "B"}
let listC = companiesf.filter {$0.company == "C"} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...