問題:如何使用默認屬性值來初始化對象?可以重寫類中的init來創建對象嗎?使用默認屬性值初始化對象
我想避免使用視圖控制器來輸入對象的屬性數據。我不從外部來源提取數據。只想將數據保存在單獨的文件中,如類文件,因爲應用程序涉及大量文本。
我想到的對象看起來像一個典型的具有多個屬性的類對象:object1(prop1:「string」,prop2:[string],prop3:[string]等.. ),但創建在同一個類中插入到一個對象數組中。
問題:如何使用默認屬性值來初始化對象?可以重寫類中的init來創建對象嗎?使用默認屬性值初始化對象
我想避免使用視圖控制器來輸入對象的屬性數據。我不從外部來源提取數據。只想將數據保存在單獨的文件中,如類文件,因爲應用程序涉及大量文本。
我想到的對象看起來像一個典型的具有多個屬性的類對象:object1(prop1:「string」,prop2:[string],prop3:[string]等.. ),但創建在同一個類中插入到一個對象數組中。
使用無格式枚舉,類似於名稱空間來存儲文本。然後只需在默認初始化器中引用它們。
enum StaticText {
static let A = "A"
static let B = "B"
static let C = "C"
}
class SomeClass {
let A = StaticText.A
let B = StaticText.B
let C = StaticText.C
}
讓使用便利初始化的延伸:
public class ToolBoardView: UIVisualEffectView {
public var closeButton = ToolBoardCloseButton()
public var imageSegments = UISegmentedControl (items: ["Subject","Frame"])
internal var sliderBackgrounds:[UILabel] = []
convenience internal init(
_ tag :Int,
_ p: inout [NSLayoutConstraint],
_ l: inout [NSLayoutConstraint],
_ target :Any,
_ hideAction :Selector
)
{
self.init(frame: CGRect.zero)
self.effect = UIBlurEffect(style: .light)
self.tag = tag
switch tag {
case 0:
break
case 1:
addFilterControls(&p, &l)
default:
break
}
closeButton = ToolBoardCloseButton(tag: tag, target: target, action: hideAction)
self.addSubview(closeButton)
turnOffAutoResizing()
makeControlsHidden(true)
}
}
這只是一個我的一部分,但它應該讓你去。
Here是我剛發佈的內容的一個很好的描述。
如果靜態值是你所需要的,你爲什麼要用static而不是struct或class? – Ryan
這是目前的Swift約定。這是Swift最接近命名空間的東西。枚舉不能被意外實例化。 – Alexander
http://stackoverflow.com/a/38585994/3141234 https://github.com/raywenderlich/swift-style-guide#constants – Alexander