Быстрое добавление или объединение массива элементов по уникальному идентификатору свойства - PullRequest
0 голосов
/ 16 октября 2018

Привет Я нахожу эффективные алгоритмы, которые могут добавить массив объектов (объект class не struct) в существующий массив.Требование заключается в том, что если существующий массив содержит объект с таким же id, функция будет merge объект (обновлять свойства исходного объекта, если есть какие-либо изменения).Если object.id не включен в существующий массив, функция просто добавит этот объект в существующий массив.Возвращаемый массив состоит из новых объектов и обновленного объекта.

По существу, добавить объект только если объект.id является новым.если object.id уже включен, он объединит свойства объекта.

Спасибо, товарищ @Joakim Danielson Я нашел возможное решение заменить дубликат новым.Я нахожу способ слияния вместо замены

func addPhotoArray(_ photos: [Photo], addedPhoto: [Photo]) -> [Photo]{

    var resultArray = photos

    for photo in addedPhoto {
        if let photoIndex = resultArray.firstIndex(where: { $0.id == photo.id}) {
            resultArray[photoIndex] = photo
        } else {
            resultArray.append(photo)
        }
    }
    return resultArray
}

Я подготовил merge функцию, подобную приведенной ниже, в Photo class

func updatePhoto(_ updatedPhoto: Photo) {

        self.title = updatedPhoto.title
        self.owner = updatedPhoto.owner
        self.secret = updatedPhoto.secret
        self.server = updatedPhoto.server
        self.farm = updatedPhoto.farm
        self.ispublic = updatedPhoto.ispublic
        self.isfriend = updatedPhoto.isfriend
        self.isfamily = updatedPhoto.isfamily

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...