Swift:这个错误是什么:'私人(设置)'修饰符不能应用于只读属性意味着什么?

时间:2017-08-13 12:07:47

标签: swift computed-properties

如果我们可以创建只读的Somethig计算属性,我有点困惑:

extension ToMyClass {
    private(set) var isEmpty: Bool {
        return head == nil
    }
} 

尝试创建时遇到以下错误:

 error: 'private(set)' modifier cannot be applied to read-only properties

2 个答案:

答案 0 :(得分:5)

您正在尝试为计算属性设置修改器,该属性始终为只读

以下代码取自:The Swift Programming Language (Swift 4)

struct TrackedString {
    private(set) var numberOfEdits = 0
    var value: String = "" {
        didSet {
            numberOfEdits += 1
        }
    }
}

它应该是存储属性

答案 1 :(得分:1)

我遇到了同样的错误,但原因完全不同。我的代码是这样的:

protocol Foo {
    var bar: String { get }
}
class Baz: Foo {
    private (set) let bar: String // Error
    
    init(bar: String) {
        self.bar = bar
    }
}

我只需要改变:

private (set) let bar: String

到:

private (set) var bar: String

let 使属性不可变,这导致了问题。