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

Swift 3.2迁移至Swift 4时autosavesInPlace方法报错的解决咨询

解决Swift 4中NSDocument autosavesInPlace的Override报错

嘿,这个问题我之前也碰到过!Swift 4对Cocoa框架的API做了不少贴合Swift语法习惯的调整,其中就包括NSDocument的autosavesInPlace——它从类方法变成了只读类属性,这就是你升级后报错的核心原因。

在Swift 3.2环境下,autosavesInPlace还是Objective-C风格的类方法,所以你用override func去重写完全没问题;但到了Swift 4,苹果把这类返回固定值的类方法重构为计算属性,更符合Swift的设计逻辑。

你只需要把代码改成下面这样就能正常运行了:

import Cocoa
class Document: NSDocument {
    override class var autosavesInPlace: Bool {
        return true
    }
}

简单来说就是把原来的func autosavesInPlace() -> Bool替换成var autosavesInPlace: Bool的计算属性形式,这样就能正确重写父类的属性,彻底解决报错问题啦。

内容的提问来源于stack exchange,提问作者Cue

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:59:38