У меня есть массив словаря с пользовательским объектом в Swift.
Сейчас я сравниваю объект для добавления и обновления.
Логика проста: добавлять данные, если они не существуют, и обновлять, если в словаре есть изменения.
Пользовательский тип объекта:
@objc public class User: NSObject , Mappable
из getUserID я могу получить идентификатор пользователя
Приведенный ниже код выполняется в цикле for, откуда я передаю объект User.
var peopleList = [User]()
if self.peopleList.count > 0 {
if self.peopleList.contains(where: {$0.getUserID() == users.getUserID()})
{
// check for any update in dist
if let index = self.peopleList.index(of: users)
{
if users.isEqual(self.peopleList[index])
{
print("equal no updates")
}
else
{
print("need to updates objects..")
}
}
//already exist room
}
else
{
self.peopleList.append(users)
}
}
Я знаю, что это может быть связано с равноправным
поэтому я использую ниже fuction
func isEqual<T: Equatable>(type: T.Type, a: Any, b: Any) -> Bool? {
guard let a = a as? T, let b = b as? T else { return nil }
return a == b
}
Но я получаю index = nil.
Есть ли идея или предложение, чтобы решить это.
Если есть какой-то другой способ сделать это эффективно, то они очень приветствуются.