如何在Swift中定义只读属性?我有一个需要定义公共属性的父类,例如。 itemCount
。这是我的代码:
Class Parent: UIView {
private(set) var itemCount: Int = 0
}
class Child {
private(set) override var itemCount {
get {
return items.count
}
}
}
我收到错误:Cannot override mutable property with read-only property
我无法使用协议,因为它们无法继承类(UIView
)
我将var view = UIView
添加到我的Child类,并从UIView
类中删除Parent
继承。这似乎是唯一可行的方法,但在我的实际项目中,这似乎是错误的做法,例如。 addSubview(myCustomView.view)
UIView
类Child
我无法做到这一点,因为我打算让多个相关的Child
类具有不同的属性和行为,我需要能够将我的Child
类的实例声明为Parent
课程,以利用UIView
的媒体资源和Parent
公共媒体资源。
答案 0 :(得分:4)
您可以使用可以覆盖的<system.net>
<connectionManagement>
<add address="*" maxconnection="500"/>
</connectionManagement>
</system.net>
<system.web>
(如方法)。
Computed Property
这是您声明和覆盖函数的方式
class Parent: UIView {
var itemCount: Int { return 0 }
}
class Child: Parent {
override var itemCount: Int { return 1 }
}
答案 1 :(得分:1)
作为另一个选项,您可以使用私有变量进行读/写,将另一个变量用于只读。计算您用于内部类更改,并使用numberOfItems进行公共访问。有点奇怪,但它解决了这个问题。
class someClass {
private var count: Int = 0
var numberOfItems: Int { return count }
func doSomething() {
count += 1
}
}
答案 2 :(得分:1)
当getter是public时,您可以将setter声明为private。
public class someClass {
public private(set) var count: String
}
请参阅此link