我有下面的類:更改類屬性
class Message {
var content: [String]?
init(content: [String]) {
self.content = content
}
}
我想content
是一個字符串數組,這總是大寫。即使小寫文本設置爲content
。 我似乎無法使用此計算屬性
我有下面的類:更改類屬性
class Message {
var content: [String]?
init(content: [String]) {
self.content = content
}
}
我想content
是一個字符串數組,這總是大寫。即使小寫文本設置爲content
。 我似乎無法使用此計算屬性
可以使用屬性觀察者didSet
當它被設置爲應用uppercased()
到數組:
class Message {
var content: [String]? {
didSet {
if let arr = content {
self.content = arr.map { $0.uppercased() }
}
}
}
init(content: [String]) {
self.content = content.map { $0.uppercased() }
}
}
您可以有一個內部變量存儲實際內容和一個可見的外部計算屬性。如果設置了公共屬性,它將計算內部(大寫)表示。
class Message {
private var _content: [String]?
var content: [String]? {
get {
return _content
}
set (new) {
if let new = new {
_content = new.map { $0.uppercased() }
} else {
_content = nil
}
}
}
init(content: [String]?) {
self.content = content
}
}
您甚至可以在初始化程序中分配content
,它將計算大寫形式。
init(content: [String]) {
self.content = content
self.setupMyProperty()
}
func setupMyProperty() {
let arrCaps = self.content.map{$0.uppercased()}
self.content.removeAll()
self.content = arrCaps
}
但是如果我想初始化後改變'content'什麼? – Marmelador
可能b這是不正確的方式,但我認爲它會工作。 –