斯威夫特:这个错误:'private(set)'修饰符不能应用于只读属性是啥意思?
Posted
技术标签:
【中文标题】斯威夫特:这个错误:\'private(set)\'修饰符不能应用于只读属性是啥意思?【英文标题】:Swift: What does this error: 'private(set)' modifier cannot be applied to read-only properties mean?斯威夫特:这个错误:'private(set)'修饰符不能应用于只读属性是什么意思? 【发布时间】:2018-01-21 10:40:24 【问题描述】:如果我们可以创建只读的计算属性,我有点困惑:
extension ToMyClass
private(set) var isEmpty: Bool
return head == nil
在尝试创建时出现以下错误:
error: 'private(set)' modifier cannot be applied to read-only properties
【问题讨论】:
【参考方案1】:您正在尝试为计算属性设置修改器,该属性始终是只读的
以下代码取自:The Swift Programming Language (Swift 4)
struct TrackedString
private(set) var numberOfEdits = 0
var value: String = ""
didSet
numberOfEdits += 1
应该是存储属性
【讨论】:
非常感谢。我真的错过了“计算属性,它始终是只读的”【参考方案2】:我遇到了同样的错误,但原因完全不同。我的代码是这样的:
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
使属性不可变,这会导致问题。
【讨论】:
以上是关于斯威夫特:这个错误:'private(set)'修饰符不能应用于只读属性是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章
UISearchDisplayController 错误 - 斯威夫特