问题:如何使用默认属性值来初始化对象?可以重写类中的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