如何解决如何在通过切换大小写选择的数组中添加元素
我想调用该函数并给定一个类型,以允许其他数组从API追加数据。我已打印出计数,但customerViewData仍然具有0元素,而selectCustomerListViewData具有10元素。看来selectCustomerListViewData = customerViewData并没有按照我的想法工作。对于这种情况,如何在正确的数组中添加元素?我知道我可以创建3个函数来解决此问题。
class CustomerListViewData{
var customer_id: String = ""
var name: String = ""
var image: String = ""
var birthday: String = ""
var age: String = ""
var gender: String = ""
var mobile: String = ""
var identityNumber: String = ""
var isSelected: Bool = false
var isChanged: Bool = false
}
func getCustomerViewData(type: String)->[CustomerListViewData]{
var selectCustomerListViewData: [CustomerListViewData]
var selectCustomerRawData: GetCustomerResponse?
switch type {
case "1":
selectCustomerListViewData = customerViewData
selectCustomerRawData = customerRawData
break
case "2":
selectCustomerListViewData = searchCustomerViewData
selectCustomerRawData = searchCustomerRawData
break
default:
selectCustomerListViewData = notificationCustomerViewData
selectCustomerRawData = notificationCustomerRawData
break
}
if let customerList = selectCustomerRawData?.customerList{
for each in customerList{
let customer = CustomerListViewData(each.customer_id,each.name,each.image ?? "",each.birthday,calculateAge(birthday: each.birthday),each.gender,each.spikeStatus,each.mobile ?? "",each.identityNumber ?? "")
selectCustomerListViewData.append(customer)
}
}
print("\(customerViewData.count)")
print("\(selectCustomerListViewData.count)")
return selectCustomerListViewData
}
解决方法
您的问题是数组是值类型,而不是引用类型。您需要将数据附加到要向其中添加值的实际数组。
我会将您的方法分为两种方法:
func processResponse(ofType type: String) {
switch type {
case "1":
customerViewData += extractList(from: customerRawData)
case "2":
searchCustomerViewData += extractList(from: searchCustomerRawData)
default:
notificationCustomerViewData += extractList(from: notificationCustomerRawData)
}
}
func extractList(from response: GetCustomerResponse?) -> [CustomerListViewData] {
guard let response = response else { return [] }
return response.customerList.map { customer in
return CustomerListViewData(customer.customer_id,customer.name,/* ... */)
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。