gpt4 book ai didi

ios - 在里面!不会在Swift中继承

转载 作者:行者123 更新时间:2023-12-01 18:48:26 24 4
gpt4 key购买 nike

我目前正在尝试基于Realm-JSON RealmSwift JSON支持,但被initWithDictionary困扰。我将扩展名移到RLMObjectBase,并且自动生成的快速代码如下所示:

extension RLMObjectBase {
.....
public init!(JSONDictionary dictionary: [NSObject : AnyObject]!)
public func JSONDictionary() -> [NSObject : AnyObject]!

....
}

对我来说这没关系。但是Realm的 Object( RLMObjectBase的子类)由于某种原因不会继承 init!(JSONDictionary dictionary: [NSObject : AnyObject]!)。不可用
任何建议,将不胜感激。

最佳答案

子类仅在未定义自己的初始化器时才继承 super class 初始化器。

您可以在RLMObjectBase类扩展中仅定义便捷初始化程序:

extension RLMObjectBase {
...
convenience init!(JSONDictionary dictionary: [NSObject : AnyObject]!) { ... }
...
}

如果子类没有初始化程序,它们将被子类继承:
class MyCustomRLMObject: RLMObjectBase {
// no initializers
...
}

let object = MyCustomRLMObject(JSONDictionary: d)

另外,如果仅在您的应用程序中使用它,则无需将其设置为 public

类似的示例,但 UIViewController:
extension UIViewController {
convenience init(nibName: String) {
self.init(nibName: nibName, bundle: nil)
}
}

class MyViewController: UIViewController {
}

let vc = MyViewController(nibName: "MyViewController")

关于ios - 在里面!不会在Swift中继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33099242/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com