我有以下课程:
class Message {
var content: [String]?
init(content: [String]) {
self.content = content
}
}
我希望content
是一个字符串数组,它总是大写。即使小写文本设置为content
。
我似乎无法使用此
答案 0 :(得分:4)
您可以拥有一个内部变量来存储实际内容,并且计算属性对外部可见。如果设置了公共属性,它将计算内部(大写)表示。
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
,它将计算大写字母表示。
答案 1 :(得分:4)
您可以使用属性观察者 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() }
}
}
答案 2 :(得分:0)
init(content: [String]) {
self.content = content
self.setupMyProperty()
}
func setupMyProperty() {
let arrCaps = self.content.map{$0.uppercased()}
self.content.removeAll()
self.content = arrCaps
}