在swift中将对象更改为其子类

时间:2017-09-20 12:37:12

标签: swift oop

我有一个模型对象用户:

class User: NSObject {
    var idUser = 0
    var email = ""
    var name = ""
}

然后我有UserViewController,我想在表中显示用户:

class UserViewController: UIViewController {
    var users = [User]()
}

但我在User对象上需要一些额外的标志(属性)和计算属性:

class UserWrap: User {
    var checked: Bool {
        get {
            return // some calculations
        }
    }
}

我想在UserViewController中使用这个子类对象(UserWrap):

class UserViewController: UIViewController {
    var users = [UserWrap]()
}

模型函数getUsers返回[User]?:

func getUsers() -> [User]? {
    return // data from DB
}

处理此问题的正确方法是什么(在控制器用户属性中使用UserWrap对象而不是User)?

  1. 模型是否应返回UserWrap对象而不是User?
  2. 我应该"重新映射"那些用户在将它们存储到控制器属性时从模型返回了什么?
  3. 我应该将这些额外的属性/计算属性直接添加到User对象并且根本不使用UserWrap吗?

0 个答案:

没有答案