You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否为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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 19:00:59