快速添加或合并基于唯一属性ID的项目数组

时间:2018-10-16 08:45:38

标签: ios arrays swift merge

嗨,我正在寻找有效的算法,可以将对象数组(对象是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

    }

0 个答案:

没有答案