У меня есть массив [(userID: String, friendBool: Bool)], который я хочу отфильтровать и преобразовать в массив только userID [String] (удаляя friendBool и, следовательно, изменяя элемент). Есть ли в Swift функция для этого?
В настоящее время я фильтрую массив, а затем использую для l oop для фильтруемого массива [(userID: String, friendBool: Bool)], чтобы преобразовать его в массив [String]. Есть ли лучший способ сделать это?
Текущий код:
let friendArray = [(userID: String, friendBool: Bool)]()
let excludeUsers = [String]()
//Updates with user actions
var userArrayForTableView = [String]()
//Filter friendArray
let newArray = friendArray.filter { (existingFriend) -> Bool in
return !excludeUsers.contains(existingFriend.userID)
}
//Convert array fro [(userID: String, friendBool: Bool)] to [String]
for existingFriend in newArray {
userArrayForTableView.append(existingFriend.userID)
}
Что я пытаюсь сделать:
//Loaded on ViewDidLoad
let friendArray = [(userID: String, friendBool: Bool)]()
let excludeUsers = [String]()
//Updates with user actions
var userArrayForTableView = [String]()
//Filter friendArray
/*
Below fitler returns an array of [(userID: String, friendBool: Bool)]...
but I want a filter to return an array of [String] for just userIDs
*/
let newArray = friendArray.filter { (existingFriend) -> Bool in
return !excludeUsers.contains(existingFriend.userID)
}
//ERROR HERE because 'newArray' is not [String]
userArrayForTableView.append(contentsOf: newArray)