ios - 两个类的 Swift 可选继承

标签 ios swift inheritance parse-platform

所以我有一个问题,我不确定是否完全可行。
对于我的本地模型,我希望能够从两个类之一继承。

例如:
我有一个事件对象,它有名称、位置、参加者等。这个对象可以从后端下载(我正在使用 Parse)或在本地创建以上传到服务器。

如果正在下载,那么它将使用从服务器下载的 parseObject 进行初始化。 Parse 提供了我可以使用的 createdAt 日期时间、objectIDupdatedTime。但是,如果我要在本地创建对象以便稍后上传,那么设置这些变量将是多余的,因为我不知道它们实际上是什么(直到我的后端懒惰地加载这些时间和 objectID 到存在。

为了在本地存储这些数据类型,我计划使用对象,BaseParseObject 定义如下:

class BaseParseObject: NSObject {
    var objectID: String
    var createdAt: NSDate
    var updatedAt: NSDate
    var className: String

    var timeSinceCreation: NSTimeInterval {
        get {
            return createdAt.timeIntervalSinceNow
        }
    }

    init(parseObject: PFObject) {
        self.objectID = parseObject.objectId!
        self.createdAt = parseObject.createdAt!
        self.updatedAt = parseObject.updatedAt!
        self.className = parseObject.parseClassName
    }
}

和一个 baseObject 定义为:

class BaseObject: NSObject {
    var className: String

    init(className: String) {
        self.className = className
    }
}

然后我有我的事件对象,它可以在本地创建以上传或从服务器下载。
有什么方法可以选择从这两个类继承?只有一个事件类而不是两个?

最佳答案

一句话,没有。 Swift 和 Objective-C 都不支持多重继承。不过,您可以使用类扩展获得类似的效果。您可以让一个类实现多个扩展。

关于ios - 两个类的 Swift 可选继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30017940/

相关文章:

ios - 应用程序激活时快速 View 重新加载

swift - 为什么 reloadData() 不起作用?

javascript - Javascript 中类扩展声明之间的区别

swift - 为什么我们要在 Swift 中覆盖初始化器?

ios - 配置文件 - iOS

ios - React Native 使用设备上的预捆绑文件,即使是 DEV 模式

ios - 使用 statusBarOrientation 的 iPad 设备方向

java - 如何向 Jframe 添加抽象方法?

ios - Twitter 登录因 TWTRInvalidInitializationException 而崩溃

ios - CAGradientLayer 导致 subview 不可见