有什么方法可以强制在方法中使用类而不是子类?

时间:2019-05-30 08:56:17

标签: swift

我有一个称为BasicUser的父类和一个从User继承的名为User的子类。当我尝试使用用户(用户类)添加基本用户(BasicUser类)时,它将传递整个User对象,而不仅仅是BasicUser。

有没有一种方法可以避免发送与方法中的类相符的子类?

class BasicUser {}

class User: BasicUser {}

func addAttendingUser(_ newUser: BasicUser) {

}

let user = User()
addAttendingUser(user)

编辑: ObjectMapper背后的一些逻辑。 首先,它映射了Festival,并且因为Festival具有BasicUser数组(attendingUsers),因此它在作为用户的BasicUser上调用映射。

用户有一个followedFestivals数组,可以从多个线程访问它。

关于用户类别:

override func mapping(map: Map) {
    super.mapping(map: map)
    followedFestivals <- map["followed_festivals"]
}

节日课:

override func mapping(map: Map) {
    super.mapping(map: map)
    attendingUsers <- map["attending_users_list"]
}

1 个答案:

答案 0 :(得分:1)

最简单的方法是实例化一个新对象。

class BasicUser {

    init() {}

    init(fromOther other: BasicUser) {
        // basically copy the value from other to self
    }

}

class User: BasicUser {}

func addAttendingUser(_ newUser: BasicUser) {
    let newUser = BasicUser(fromOther: newUser)
    // do your stuff
}

let user = User()
addAttendingUser(user)