微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在通过切换大小写选择的数组中添加元素

如何解决如何在通过切换大小写选择的数组中添加元素

我想调用函数并给定一个类型,以允许其他数组从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 举报,一经查实,本站将立刻删除。