我有一个称为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"]
}
答案 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)