嗨,我正在寻找有效的算法,可以将对象数组(对象是class
而不是struct
)添加到现有数组中。要求是如果现有数组包含具有相同id
的对象,则该函数将merge
个对象(如果有任何更改,请更新原始对象属性)。如果object.id
未包含在现有数组中,该函数将简单地将该对象添加到现有数组中。返回数组由新对象和更新对象组成。
基本上仅在object.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
函数
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
}