我有一个名为BasicUser的父类和一个名为User的子类,它继承自BasicUser。当我试图使用一个用户(user类)添加一个基本用户(BasicUser类)时,它会传递整个用户对象,而不仅仅是BasicUser。
有没有办法避免发送与方法中的类一致的子类?
class BasicUser {}
class User: BasicUser {}
func addAttendingUser(_ newUser: BasicUser) {
}
let user = User()
addAttendingUser(user)
编辑:
ObjectMapper背后的一些逻辑。
首先,它映射一个Festival,因为Festival有一个BasicUser数组(attentingusers),所以它调用BasicUser上的映射,它是一个用户。
用户有一个followedEstivals数组,这是从多个线程访问它的地方。
在用户类上:
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"]
}
最佳答案
最简单的事情就是实例化一个新对象。
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)
关于swift - 有什么方法可以强制在方法中使用类而不是子类?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56374869/