場景如上
- 如果只是需要了圖片順序垢箕。即第一張圖 變成了第二張,第二張變成了第一張圖呢撞。
-
在倆張圖片的基礎(chǔ)上又多加了2張圖片损姜。順序如下。其實(shí)已經(jīng)存在的倆張圖片是可以不用上傳的殊霞。只要把本次新加的圖片上傳 然后也要確保順序
基于此 我寫了下 我的實(shí)現(xiàn)邏輯
let originStr = "a,b" //原始的字符串
//原始數(shù)組
let imgArr1 = [UIImage(named: "shareicon"),UIImage(named: "zjlunch_place")]
/// 新數(shù)組
let imgArr2 = [UIImage(named: "zjlunch_place"),UIImage(named: "lake"),UIImage(named: "shareicon")]
var sameArr:[(Int,Int)] = []
for i in 0 ..< imgArr1.count {
for j in 0 ..< imgArr2.count {
if let img0 = imgArr1[i],let img1 = imgArr2[j] {
if img0 == img1 {
print("imgArr1中的\(i + 1)個(gè)元素與imgArr2中的\(j + 1)個(gè)元素是相同的")
sameArr.append((i,j))
}
}
}
}
var uploadArr:[(String,UIImage)] = []
var newUploadImgStrArr:[String] = []
for obj in imgArr2 { // 占位元素
if let img = obj {
uploadArr.append(("1",img))
}else {
uploadArr.append(("0",UIImage()))
}
newUploadImgStrArr.append("")
}
print("***sameArr***")
print(sameArr)
print("***sameArr***")
let originUploadStrArr = originStr.components(separatedBy: ",") //原始返回的字符串?dāng)?shù)組
for obj in sameArr {
let currentIndex = obj.1
let lastIndex = obj.0
uploadArr[currentIndex].0 = "0" //表示當(dāng)前圖片不需要重新上傳 待會(huì)直接拼接到對(duì)應(yīng)順序里
newUploadImgStrArr[currentIndex] = originUploadStrArr[lastIndex]
}
for (index,obj) in uploadArr.enumerated() {
if obj.0 == "1" { //表示之前沒有上傳過 現(xiàn)在需要上傳摧阅。
print("上傳圖片操作 后端返回圖片地址 ")
newUploadImgStrArr[index] = "新的地址" //直接插入新的
}
}
print("所有新添加的圖片上傳完 將新的圖片字符串 連同其他的param返回給后臺(tái)")
這樣可以減少服務(wù)端有的圖片重復(fù)上傳。