I have an issue while using filter method to compare two arrays. I don't get the same issue when I perform the same filter pattern in Playground. What's wrong with my code?
More details:
- Get users from URL and before saving I try to compare current array to new array from API:
func getUsersNetworking() {
getUsersDatabase()
manager.getUsers { [weak self] results in
guard let self = self else { return }
switch results {
case .success(let users):
// transfer data to compare:
self.filterArrays(currentUsersFromDB: self.databaseUsers, newUsersFromNet: users)
// Not relevant data to my issue:
self.getUsersDatabase()
case .failure(let error): print(error.localizedDescription)
}
}
}
- method where error appears:
func filterArrays(currentUsersFromDB: [Users], newUsersFromNet: [Users]) {
let users = newUsersFromNet.filter { currentUsersFromDB.contains($0)} // Error appears here!
var array: [Users] = []
array.append(contentsOf: users)
database.saveUsersToDB(users: array)
}
The Error message: Cannot convert value of type 'Users' to expected argument type '(Users) throws -> Bool'