使用默认属性值初始化对象

时间:2016-11-22 22:09:32

标签: swift

问题:如何使用默认属性值初始化对象?可以覆盖类中的init来创建对象吗?

我想避免使用视图控制器输入对象的属性数据。我不是从外部来源提取数据。只是想将数据保存在单独的文件中,比如类文件,因为应用程序涉及大量文本。

我想到的对象看起来像是具有许多属性的典型类对象:object1(prop1:“string”,prop2:[string],prop3:[string]等等...... )但是在同一个类中创建,以插入到一个对象数组中。

2 个答案:

答案 0 :(得分:0)

使用无名枚举(类似于名称空间)来存储文本。然后只引用默认初始值设定项中的那些。

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
}

答案 1 :(得分:0)

制作使用便利初始化程序的扩展程序:

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非常好地描述了我刚发布的内容。