Reputation: 59
my code is like below,
struct RegistrationInformation {
let leftTitle: String
let rightTitle: String
}
struct RegisterData{
let vValueL : String
}
var regDatas : [RegistrationInformation] = []
for i in 0...3 {
regDatas.append(RegistrationInformation(leftTitle: regData[i].vValue, rightTitle: ""))
}
for i in 4...7 {
regDatas.append(RegistrationInformation(leftTitle: "", rightTitle: regData[i].vValue))
}
//output of regDatas is
[Datas.RegistrationInformation(leftTitle: "line 1", rightTitle: ""),
Datas.RegistrationInformation(leftTitle: "line3", rightTitle: ""),
Datas.RegistrationInformation(leftTitle: "line5", rightTitle: ""),
Datas.RegistrationInformation(leftTitle: "line7", rightTitle: ""),
Datas.RegistrationInformation(leftTitle: "", rightTitle: "line2"),
Datas.RegistrationInformation(leftTitle: "", rightTitle: "line4"),
Datas.RegistrationInformation(leftTitle: "", rightTitle: "line6"),
Datas.RegistrationInformation(leftTitle: "", rightTitle: "line8")]
what I want is like below in regDatas
[Datas.RegistrationInformation(leftTitle: "line 1", rightTitle: "line2"),
Datas.RegistrationInformation(leftTitle: "line3", rightTitle: "line4"),
Datas.RegistrationInformation(leftTitle: "line5", rightTitle: "line6"),
Datas.RegistrationInformation(leftTitle: "line7", rightTitle: "line8")]
I want to change data position in array struct of regDatas. how can we do that thank you
Upvotes: 2
Views: 175
Reputation: 3857
Not sure what you're trying to do, would something like this help:
let regDatas: [RegistrationInformation] = zip(0...3, 4...7)
.map { left, right in
RegistrationInformation(leftTitle: String(left), rightTitle: String(right))
}
or even:
let regDatas: [RegistrationInformation] = (0...3).map {
RegistrationInformation(leftTitle: String($0), rightTitle: String($0 + 4))
}
Upvotes: 0
Reputation: 84
struct RegistrationInformation {
let leftTitle: String
let rightTitle: String
}
struct RegisterData{
let vValueL : String
}
var regData: [RegisterData] = [
RegisterData(vValueL: "line1"),
RegisterData(vValueL: "line2"),
RegisterData(vValueL: "line3"),
RegisterData(vValueL: "line4"),
RegisterData(vValueL: "line5"),
RegisterData(vValueL: "line6"),
RegisterData(vValueL: "line7"),
RegisterData(vValueL: "line8")
]
func compressData(elements: [RegisterData]) -> [RegistrationInformation]{
var regDatas : [RegistrationInformation] = []
for i in 0..<elements.count {
if i != (elements.count-1){
regDatas.append(RegistrationInformation(leftTitle: regData[i].vValueL, rightTitle: regData[i+1].vValueL))
}else{
regDatas.append(RegistrationInformation(leftTitle: regData[i].vValueL, rightTitle: ""))
}
}
return regDatas
}
print(compressData(elements: regData))
Upvotes: 1