Привет Я нахожу эффективные алгоритмы, которые могут добавить массив объектов (объект 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
}