能否为Realm Object子类添加指定初始化器?规则是否已变更
Realm Object子类自定义指定初始化器的规则疑问
代码场景
我编写了如下代码:
protocol P { init(data: Data) throws } enum PError: Error { case invalidData } final class O: Object, P { @Persisted var name: String init(data: Data) throws { guard let name = String(data: data, encoding: .utf8) else { throw PError.invalidData } self.name = name super.init() } }
类O继承自Realm的Object并遵循协议P,为满足协议要求实现了一个指定初始化器。
疑问点
曾有文档说明:
创建模型Object子类时,有时可能想要添加自定义初始化方法以提升便利性。
由于Swift内省的当前限制,这些方法不能作为类的指定初始化器,而必须标记为便利初始化器。
我想确认以下问题:
- 这条规则是否在某个时间点发生了变更?
- 是否是由于Realm的PR #6294导致了该规则的变更?
- 目前实现协议
P的要求时,是否必须使用便利初始化器,还是使用指定初始化器也是可行的?
内容的提问来源于stack exchange,提问作者Andrew Hershberger
相关产品推荐
相关产品推荐

