显示错误,因为无法将'x'类型的值(即数组模型对象)转换为预期类型'x'(即..,数组模型对象)

时间:2017-05-09 08:28:56

标签: arrays swift swift3

我有一个交换机和table.if交换机“on”我应该包括停用的用户,如果交换机“关闭”然后只显示活动customer.i我从api获取数据作为所有客户基于API的响应。在一个名为active的参数中,如果active为true,则客户处于活动状态。为了那个原因 我试图将数据从一个模型复制到另一个模型swift显示错误,因为无法将类型'sguserdata'(即,arraymodelobject)的值转换为预期的参数类型'sguserwithoutactivationdeactivation'(即,arraymodelobject)两个数组对象类似主要名称

import UIKit

  class SGUserlistViewController: SGBaseViewController,UITableViewDelegate,UITableViewDataSource {
var userlistdatawithmsg:sguserlistdatawithmsg?
@IBOutlet weak var usertable: UITableView!


@IBOutlet weak var btnnew_users: UIButton!

@IBOutlet weak var IncludeDeactiveview: UIView!


@IBOutlet weak var includedeactive_switch: UISwitch!
    let  activityIndicator = UIActivityIndicatorView(frame: CGRect(x: 0, y: 0, width: 55, height: 55))
var userlistwithoutdeactivation : sguserlistdatawithoutdeactivation?
 var userdatawithoutdeactivation = [sguserwithoutdeactivation]()
 var userdata = [sguserdata]()

override func viewDidLoad() {
    self.title = "Users"
    super.viewDidLoad()



    searchonlypending()
      self.usertable.register(UINib(nibName: "sgpurchaseorderviewallTableViewCell", bundle: Bundle.main), forCellReuseIdentifier: "sgpurchaseorderviewallTableViewCell")





}
func searchonlypending(){
    self.activityIndicator.startAnimating()
    let params: [String : Any] = [:]

           SGWebServices.sharedWebServices.getuserlist(params:params) { (error, response) in
        if (error == nil) {


            if response?.message != "Authorization has been denied for this request."{
                print("success")

                  let userDefaults = UserDefaults.standard
                   let encodedData = NSKeyedArchiver.archivedData(withRootObject: response!)
                userDefaults.set(encodedData, forKey: "userlist")
                userDefaults.synchronize()
        //let userlist = self.userlistdatawithmsg?.data
                                self.usertable.reloadData()
                  self.activityIndicator.stopAnimating()
                if  response?.data.count == 0{
                    let alert = UIAlertController(title:"" , message: "No User found", preferredStyle: UIAlertControllerStyle.alert)
                    alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.default, handler: nil))

                    self.present(alert, animated: true, completion: nil)
                }

            }else{
                             self.activityIndicator.stopAnimating()
                let storyboard = UIStoryboard(name: "Main", bundle: nil)
                let controller = storyboard.instantiateViewController(withIdentifier: "SgloginViewController")
                self.present(controller, animated: true, completion: nil)
            }
        }
        else{


                let alert = UIAlertController(title: "Oops", message: "Something went wrong", preferredStyle: UIAlertControllerStyle.alert)
                alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.default, handler: nil))

                self.present(alert, animated: true, completion: nil)




            }
    }
}


@IBAction func addnewuser(_ sender: UIButton) {



    let storyboard = UIStoryboard(name: "Main", bundle: nil)
    let controller = storyboard.instantiateViewController(withIdentifier: "SGAdduserViewController")
           self.present(controller, animated: true, completion: nil)
}


func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    if  includedeactive_switch.isOn == true{
    if  userlistwithoutdeactivation?.data.count != nil{

        return (userlistwithoutdeactivation?.data.count)!
    }
    }
    else{

        if  userlistwithoutdeactivation?.data.count != nil{
            return (userlistwithoutdeactivation?.data.count)!
        }



    }
    return 0

}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    return 91
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell = usertable.dequeueReusableCell(withIdentifier: "sgpurchaseorderviewallTableViewCell")! as! sgpurchaseorderviewallTableViewCell


    cell.poname.text = userlistwithoutdeactivation?.data[indexPath.row].userName
    cell.fromclient.text = userlistwithoutdeactivation?.data[indexPath.row].roleName


    return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath){
    let selected_rowforuserdetails = indexPath.row
    print(selected_rowforuserdetails)
    UserDefaults.standard.set(selected_rowforuserdetails, forKey:"selected_row_for_userdetils")
    UserDefaults.standard.synchronize()
    let storyboard = UIStoryboard(name: "Main", bundle: nil)
    let controller = storyboard.instantiateViewController(withIdentifier: "SGUserdetailViewController")
    self.present(controller, animated: true, completion: nil)





}

@IBAction func userlistincludedeactiveations(_ sender: UISwitch) {



    if includedeactive_switch.isOn == false{

                print(self.userlistdatawithmsg?.data.count)
    //let userlist = self.userlistdatawithmsg?.data
        if SGManager.sharedManager.getuserslist()?.data != nil{

            let modeldata =  SGManager.sharedManager.getuserslist()
          userlistdatawithmsg = modeldata

    for pom in (self.userlistdatawithmsg?.data)!{
        if  pom.active == true
        {

             self.userlistwithoutdeactivation?.data.append(pom)

        }
    }
     usertable.reloadData()
        }

    }
    else{

            print(self.userlistdatawithmsg?.data.count)
        if SGManager.sharedManager.getuserslist()?.data != nil{

            let modeldata =  SGManager.sharedManager.getuserslist()
            userlistdatawithmsg = modeldata
             self.userlistwithoutdeactivation?.data[0] = userlistdatawithmsg?.data[0]
                             usertable.reloadData()

        }


    }


}

 }

这两个模型除了名字之外都是比喻的

模型1:

 import Foundation


 class sguserdata : NSObject, NSCoding{

var active : Bool!
var billingAddress : AnyObject!
var clientId : Int!
var confirmPassword : AnyObject!
var createdByUserName : AnyObject!
var domainInfo : AnyObject!
var email : String!
var emailConfirmed : Bool!
var emailStatus : Bool!
var firstName : String!
var id : String!
var imagePath : AnyObject!
var joinDate : String!
var lastName : String!
var level : Int!
var loggedInUserClientId : Int!
var loggedInUserId : AnyObject!
var loggedInUserName : AnyObject!
var password : AnyObject!
var passwordHash : AnyObject!
var phoneNumber : String!
var role : sguserrole!
var roleId : AnyObject!
var roleName : String!
var securityStamp : AnyObject!
var userName : String!


/**
 * Instantiate the instance using the passed dictionary values to set the properties values
 */
init(fromDictionary dictionary: NSDictionary){
    active = dictionary["active"] as? Bool
    billingAddress = dictionary["billingAddress"] as? AnyObject
    clientId = dictionary["clientId"] as? Int
    confirmPassword = dictionary["confirmPassword"] as? AnyObject
    createdByUserName = dictionary["createdByUserName"] as? AnyObject
    domainInfo = dictionary["domainInfo"] as? AnyObject
    email = dictionary["email"] as? String
    emailConfirmed = dictionary["emailConfirmed"] as? Bool
    emailStatus = dictionary["emailStatus"] as? Bool
    firstName = dictionary["firstName"] as? String
    id = dictionary["id"] as? String
    imagePath = dictionary["imagePath"] as? AnyObject
    joinDate = dictionary["joinDate"] as? String
    lastName = dictionary["lastName"] as? String
    level = dictionary["level"] as? Int
    loggedInUserClientId = dictionary["loggedInUserClientId"] as? Int
    loggedInUserId = dictionary["loggedInUserId"] as? AnyObject
    loggedInUserName = dictionary["loggedInUserName"] as? AnyObject
    password = dictionary["password"] as? AnyObject
    passwordHash = dictionary["passwordHash"] as? AnyObject
    phoneNumber = dictionary["phoneNumber"] as? String
    if let roleData = dictionary["role"] as? NSDictionary{
        role = sguserrole(fromDictionary: roleData)
    }
    roleId = dictionary["roleId"] as? AnyObject
    roleName = dictionary["roleName"] as? String
    securityStamp = dictionary["securityStamp"] as? AnyObject
    userName = dictionary["userName"] as? String
}

/**
 * Returns all the available property values in the form of NSDictionary object where the key is the approperiate json key and the value is the value of the corresponding property
 */
func toDictionary() -> NSDictionary
{
    var dictionary = NSMutableDictionary()
    if active != nil{
        dictionary["active"] = active
    }
    if billingAddress != nil{
        dictionary["billingAddress"] = billingAddress
    }
    if clientId != nil{
        dictionary["clientId"] = clientId
    }
    if confirmPassword != nil{
        dictionary["confirmPassword"] = confirmPassword
    }
    if createdByUserName != nil{
        dictionary["createdByUserName"] = createdByUserName
    }
    if domainInfo != nil{
        dictionary["domainInfo"] = domainInfo
    }
    if email != nil{
        dictionary["email"] = email
    }
    if emailConfirmed != nil{
        dictionary["emailConfirmed"] = emailConfirmed
    }
    if emailStatus != nil{
        dictionary["emailStatus"] = emailStatus
    }
    if firstName != nil{
        dictionary["firstName"] = firstName
    }
    if id != nil{
        dictionary["id"] = id
    }
    if imagePath != nil{
        dictionary["imagePath"] = imagePath
    }
    if joinDate != nil{
        dictionary["joinDate"] = joinDate
    }
    if lastName != nil{
        dictionary["lastName"] = lastName
    }
    if level != nil{
        dictionary["level"] = level
    }
    if loggedInUserClientId != nil{
        dictionary["loggedInUserClientId"] = loggedInUserClientId
    }
    if loggedInUserId != nil{
        dictionary["loggedInUserId"] = loggedInUserId
    }
    if loggedInUserName != nil{
        dictionary["loggedInUserName"] = loggedInUserName
    }
    if password != nil{
        dictionary["password"] = password
    }
    if passwordHash != nil{
        dictionary["passwordHash"] = passwordHash
    }
    if phoneNumber != nil{
        dictionary["phoneNumber"] = phoneNumber
    }
    if role != nil{
        dictionary["role"] = role.toDictionary()
    }
    if roleId != nil{
        dictionary["roleId"] = roleId
    }
    if roleName != nil{
        dictionary["roleName"] = roleName
    }
    if securityStamp != nil{
        dictionary["securityStamp"] = securityStamp
    }
    if userName != nil{
        dictionary["userName"] = userName
    }
    return dictionary
}

/**
 * NSCoding required initializer.
 * Fills the data from the passed decoder
 */
@objc required init(coder aDecoder: NSCoder)
{
    active = aDecoder.decodeObject(forKey: "active") as? Bool
    billingAddress = aDecoder.decodeObject(forKey: "billingAddress") as? AnyObject
    clientId = aDecoder.decodeObject(forKey: "clientId") as? Int
    confirmPassword = aDecoder.decodeObject(forKey: "confirmPassword") as? AnyObject
    createdByUserName = aDecoder.decodeObject(forKey: "createdByUserName") as? AnyObject
    domainInfo = aDecoder.decodeObject(forKey: "domainInfo") as? AnyObject
    email = aDecoder.decodeObject(forKey: "email") as? String
    emailConfirmed = aDecoder.decodeObject(forKey: "emailConfirmed") as? Bool
    emailStatus = aDecoder.decodeObject(forKey: "emailStatus") as? Bool
    firstName = aDecoder.decodeObject(forKey: "firstName") as? String
    id = aDecoder.decodeObject(forKey: "id") as? String
    imagePath = aDecoder.decodeObject(forKey: "imagePath") as? AnyObject
    joinDate = aDecoder.decodeObject(forKey: "joinDate") as? String
    lastName = aDecoder.decodeObject(forKey: "lastName") as? String
    level = aDecoder.decodeObject(forKey: "level") as? Int
    loggedInUserClientId = aDecoder.decodeObject(forKey: "loggedInUserClientId") as? Int
    loggedInUserId = aDecoder.decodeObject(forKey: "loggedInUserId") as? AnyObject
    loggedInUserName = aDecoder.decodeObject(forKey: "loggedInUserName") as? AnyObject
    password = aDecoder.decodeObject(forKey: "password") as? AnyObject
    passwordHash = aDecoder.decodeObject(forKey: "passwordHash") as? AnyObject
    phoneNumber = aDecoder.decodeObject(forKey: "phoneNumber") as? String
    role = aDecoder.decodeObject(forKey: "role") as? sguserrole
    roleId = aDecoder.decodeObject(forKey: "roleId") as? AnyObject
    roleName = aDecoder.decodeObject(forKey: "roleName") as? String
    securityStamp = aDecoder.decodeObject(forKey: "securityStamp") as? AnyObject
    userName = aDecoder.decodeObject(forKey: "userName") as? String

}

/**
 * NSCoding required method.
 * Encodes mode properties into the decoder
 */
 @objc func encode(with aCoder: NSCoder)
{
    if active != nil{
        aCoder.encode(active, forKey: "active")
    }
    if billingAddress != nil{
        aCoder.encode(billingAddress, forKey: "billingAddress")
    }
    if clientId != nil{
        aCoder.encode(clientId, forKey: "clientId")
    }
    if confirmPassword != nil{
        aCoder.encode(confirmPassword, forKey: "confirmPassword")
    }
    if createdByUserName != nil{
        aCoder.encode(createdByUserName, forKey: "createdByUserName")
    }
    if domainInfo != nil{
        aCoder.encode(domainInfo, forKey: "domainInfo")
    }
    if email != nil{
        aCoder.encode(email, forKey: "email")
    }
    if emailConfirmed != nil{
        aCoder.encode(emailConfirmed, forKey: "emailConfirmed")
    }
    if emailStatus != nil{
        aCoder.encode(emailStatus, forKey: "emailStatus")
    }
    if firstName != nil{
        aCoder.encode(firstName, forKey: "firstName")
    }
    if id != nil{
        aCoder.encode(id, forKey: "id")
    }
    if imagePath != nil{
        aCoder.encode(imagePath, forKey: "imagePath")
    }
    if joinDate != nil{
        aCoder.encode(joinDate, forKey: "joinDate")
    }
    if lastName != nil{
        aCoder.encode(lastName, forKey: "lastName")
    }
    if level != nil{
        aCoder.encode(level, forKey: "level")
    }
    if loggedInUserClientId != nil{
        aCoder.encode(loggedInUserClientId, forKey: "loggedInUserClientId")
    }
    if loggedInUserId != nil{
        aCoder.encode(loggedInUserId, forKey: "loggedInUserId")
    }
    if loggedInUserName != nil{
        aCoder.encode(loggedInUserName, forKey: "loggedInUserName")
    }
    if password != nil{
        aCoder.encode(password, forKey: "password")
    }
    if passwordHash != nil{
        aCoder.encode(passwordHash, forKey: "passwordHash")
    }
    if phoneNumber != nil{
        aCoder.encode(phoneNumber, forKey: "phoneNumber")
    }
    if role != nil{
        aCoder.encode(role, forKey: "role")
    }
    if roleId != nil{
        aCoder.encode(roleId, forKey: "roleId")
    }
    if roleName != nil{
        aCoder.encode(roleName, forKey: "roleName")
    }
    if securityStamp != nil{
        aCoder.encode(securityStamp, forKey: "securityStamp")
    }
    if userName != nil{
        aCoder.encode(userName, forKey: "userName")
    }

}

}

模型2:

   import Foundation


  class sguserwithoutdeactivation : NSObject, NSCoding{

var active : Bool!
var billingAddress : AnyObject!
var clientId : Int!
var confirmPassword : AnyObject!
var createdByUserName : AnyObject!
var domainInfo : AnyObject!
var email : String!
var emailConfirmed : Bool!
var emailStatus : Bool!
var firstName : String!
var id : String!
var imagePath : AnyObject!
var joinDate : String!
var lastName : String!
var level : Int!
var loggedInUserClientId : Int!
var loggedInUserId : AnyObject!
var loggedInUserName : AnyObject!
var password : AnyObject!
var passwordHash : AnyObject!
var phoneNumber : String!
var role : sguserrole!
var roleId : AnyObject!
var roleName : String!
var securityStamp : AnyObject!
var userName : String!


/**
 * Instantiate the instance using the passed dictionary values to set the properties values
 */
init(fromDictionary dictionary: NSDictionary){
    active = dictionary["active"] as? Bool
    billingAddress = dictionary["billingAddress"] as? AnyObject
    clientId = dictionary["clientId"] as? Int
    confirmPassword = dictionary["confirmPassword"] as? AnyObject
    createdByUserName = dictionary["createdByUserName"] as? AnyObject
    domainInfo = dictionary["domainInfo"] as? AnyObject
    email = dictionary["email"] as? String
    emailConfirmed = dictionary["emailConfirmed"] as? Bool
    emailStatus = dictionary["emailStatus"] as? Bool
    firstName = dictionary["firstName"] as? String
    id = dictionary["id"] as? String
    imagePath = dictionary["imagePath"] as? AnyObject
    joinDate = dictionary["joinDate"] as? String
    lastName = dictionary["lastName"] as? String
    level = dictionary["level"] as? Int
    loggedInUserClientId = dictionary["loggedInUserClientId"] as? Int
    loggedInUserId = dictionary["loggedInUserId"] as? AnyObject
    loggedInUserName = dictionary["loggedInUserName"] as? AnyObject
    password = dictionary["password"] as? AnyObject
    passwordHash = dictionary["passwordHash"] as? AnyObject
    phoneNumber = dictionary["phoneNumber"] as? String
    if let roleData = dictionary["role"] as? NSDictionary{
        role = sguserrole(fromDictionary: roleData)
    }
    roleId = dictionary["roleId"] as? AnyObject
    roleName = dictionary["roleName"] as? String
    securityStamp = dictionary["securityStamp"] as? AnyObject
    userName = dictionary["userName"] as? String
}

/**
 * Returns all the available property values in the form of NSDictionary object where the key is the approperiate json key and the value is the value of the corresponding property
 */
func toDictionary() -> NSDictionary
{
    var dictionary = NSMutableDictionary()
    if active != nil{
        dictionary["active"] = active
    }
    if billingAddress != nil{
        dictionary["billingAddress"] = billingAddress
    }
    if clientId != nil{
        dictionary["clientId"] = clientId
    }
    if confirmPassword != nil{
        dictionary["confirmPassword"] = confirmPassword
    }
    if createdByUserName != nil{
        dictionary["createdByUserName"] = createdByUserName
    }
    if domainInfo != nil{
        dictionary["domainInfo"] = domainInfo
    }
    if email != nil{
        dictionary["email"] = email
    }
    if emailConfirmed != nil{
        dictionary["emailConfirmed"] = emailConfirmed
    }
    if emailStatus != nil{
        dictionary["emailStatus"] = emailStatus
    }
    if firstName != nil{
        dictionary["firstName"] = firstName
    }
    if id != nil{
        dictionary["id"] = id
    }
    if imagePath != nil{
        dictionary["imagePath"] = imagePath
    }
    if joinDate != nil{
        dictionary["joinDate"] = joinDate
    }
    if lastName != nil{
        dictionary["lastName"] = lastName
    }
    if level != nil{
        dictionary["level"] = level
    }
    if loggedInUserClientId != nil{
        dictionary["loggedInUserClientId"] = loggedInUserClientId
    }
    if loggedInUserId != nil{
        dictionary["loggedInUserId"] = loggedInUserId
    }
    if loggedInUserName != nil{
        dictionary["loggedInUserName"] = loggedInUserName
    }
    if password != nil{
        dictionary["password"] = password
    }
    if passwordHash != nil{
        dictionary["passwordHash"] = passwordHash
    }
    if phoneNumber != nil{
        dictionary["phoneNumber"] = phoneNumber
    }
    if role != nil{
        dictionary["role"] = role.toDictionary()
    }
    if roleId != nil{
        dictionary["roleId"] = roleId
    }
    if roleName != nil{
        dictionary["roleName"] = roleName
    }
    if securityStamp != nil{
        dictionary["securityStamp"] = securityStamp
    }
    if userName != nil{
        dictionary["userName"] = userName
    }
    return dictionary
}

/**
 * NSCoding required initializer.
 * Fills the data from the passed decoder
 */
@objc required init(coder aDecoder: NSCoder)
{
    active = aDecoder.decodeObject(forKey: "active") as? Bool
    billingAddress = aDecoder.decodeObject(forKey: "billingAddress") as? AnyObject
    clientId = aDecoder.decodeObject(forKey: "clientId") as? Int
    confirmPassword = aDecoder.decodeObject(forKey: "confirmPassword") as? AnyObject
    createdByUserName = aDecoder.decodeObject(forKey: "createdByUserName") as? AnyObject
    domainInfo = aDecoder.decodeObject(forKey: "domainInfo") as? AnyObject
    email = aDecoder.decodeObject(forKey: "email") as? String
    emailConfirmed = aDecoder.decodeObject(forKey: "emailConfirmed") as? Bool
    emailStatus = aDecoder.decodeObject(forKey: "emailStatus") as? Bool
    firstName = aDecoder.decodeObject(forKey: "firstName") as? String
    id = aDecoder.decodeObject(forKey: "id") as? String
    imagePath = aDecoder.decodeObject(forKey: "imagePath") as? AnyObject
    joinDate = aDecoder.decodeObject(forKey: "joinDate") as? String
    lastName = aDecoder.decodeObject(forKey: "lastName") as? String
    level = aDecoder.decodeObject(forKey: "level") as? Int
    loggedInUserClientId = aDecoder.decodeObject(forKey: "loggedInUserClientId") as? Int
    loggedInUserId = aDecoder.decodeObject(forKey: "loggedInUserId") as? AnyObject
    loggedInUserName = aDecoder.decodeObject(forKey: "loggedInUserName") as? AnyObject
    password = aDecoder.decodeObject(forKey: "password") as? AnyObject
    passwordHash = aDecoder.decodeObject(forKey: "passwordHash") as? AnyObject
    phoneNumber = aDecoder.decodeObject(forKey: "phoneNumber") as? String
    role = aDecoder.decodeObject(forKey: "role") as? sguserrole
    roleId = aDecoder.decodeObject(forKey: "roleId") as? AnyObject
    roleName = aDecoder.decodeObject(forKey: "roleName") as? String
    securityStamp = aDecoder.decodeObject(forKey: "securityStamp") as? AnyObject
    userName = aDecoder.decodeObject(forKey: "userName") as? String

}

/**
 * NSCoding required method.
 * Encodes mode properties into the decoder
 */
@objc func encode(with aCoder: NSCoder)
{
    if active != nil{
        aCoder.encode(active, forKey: "active")
    }
    if billingAddress != nil{
        aCoder.encode(billingAddress, forKey: "billingAddress")
    }
    if clientId != nil{
        aCoder.encode(clientId, forKey: "clientId")
    }
    if confirmPassword != nil{
        aCoder.encode(confirmPassword, forKey: "confirmPassword")
    }
    if createdByUserName != nil{
        aCoder.encode(createdByUserName, forKey: "createdByUserName")
    }
    if domainInfo != nil{
        aCoder.encode(domainInfo, forKey: "domainInfo")
    }
    if email != nil{
        aCoder.encode(email, forKey: "email")
    }
    if emailConfirmed != nil{
        aCoder.encode(emailConfirmed, forKey: "emailConfirmed")
    }
    if emailStatus != nil{
        aCoder.encode(emailStatus, forKey: "emailStatus")
    }
    if firstName != nil{
        aCoder.encode(firstName, forKey: "firstName")
    }
    if id != nil{
        aCoder.encode(id, forKey: "id")
    }
    if imagePath != nil{
        aCoder.encode(imagePath, forKey: "imagePath")
    }
    if joinDate != nil{
        aCoder.encode(joinDate, forKey: "joinDate")
    }
    if lastName != nil{
        aCoder.encode(lastName, forKey: "lastName")
    }
    if level != nil{
        aCoder.encode(level, forKey: "level")
    }
    if loggedInUserClientId != nil{
        aCoder.encode(loggedInUserClientId, forKey: "loggedInUserClientId")
    }
    if loggedInUserId != nil{
        aCoder.encode(loggedInUserId, forKey: "loggedInUserId")
    }
    if loggedInUserName != nil{
        aCoder.encode(loggedInUserName, forKey: "loggedInUserName")
    }
    if password != nil{
        aCoder.encode(password, forKey: "password")
    }
    if passwordHash != nil{
        aCoder.encode(passwordHash, forKey: "passwordHash")
    }
    if phoneNumber != nil{
        aCoder.encode(phoneNumber, forKey: "phoneNumber")
    }
    if role != nil{
        aCoder.encode(role, forKey: "role")
    }
    if roleId != nil{
        aCoder.encode(roleId, forKey: "roleId")
    }
    if roleName != nil{
        aCoder.encode(roleName, forKey: "roleName")
    }
    if securityStamp != nil{
        aCoder.encode(securityStamp, forKey: "securityStamp")
    }
    if userName != nil{
        aCoder.encode(userName, forKey: "userName")
    }

 }

 }

如果有人知道解决方案,请提供帮助。

1 个答案:

答案 0 :(得分:0)

首先,我建议使用大写字母来启动类名,这样可以使代码更容易阅读。

要解决您的问题,我会制作一个包含您想要显示的所有常用字段的协议,然后使这两个类符合该协议。然后,您可以在viewcontroller中拥有该协议的数组,并且可以使用任一类的成员填充它。

protocol SGUserType {
var active: Bool { get set }
var billingAddress: Any { get set }
...
}

class SGUserData : SGUserType, NSObject, NSCoding {
var active: Bool
var billingAddress: Any
...
}

所以在你的viewcontroller中而不是:

var userlistwithoutdeactivation : sguserlistdatawithoutdeactivation?
var userdatawithoutdeactivation = [sguserwithoutdeactivation]()
var userdata = [sguserdata]()

你可以:

var userData = [SGUserType]()