如何通过匹配属性获取类型属性?

时间:2016-09-26 07:13:58

标签: ios swift

我有这堂课:

class AClass {
    var name = "Name"
    var value = 0

    static var A = AClass(name: "A", value: 1)
    static var B = AClass(name: "B", value: 2)
}

我有一个返回名称AB的函数,如何将AB作为AClass个实例与字符串{{ 1}}和A,像这样?

B

更新:

我在实际项目中有很多类型属性,所以我正在寻找一种方便的方法来获取所有属性,而无需创建每个类型属性的值。

3 个答案:

答案 0 :(得分:2)

class AClass {
    var name = "Name"
    var value = 0

    static var A = AClass(name: "A", value: 1)
    static var B = AClass(name: "B", value: 2)

    init(name:String, value:NSInteger){
        self.name = name
        self.value = value
    }
}

得到这样的话:

let aObj = AClass.A
let bObj = AClass.B

print(aObj.name)
print(bObj.name)

答案 1 :(得分:1)

试试这个:

class AClass
{
    var name = "Name"
    var value = 0

    init(name : String, value : Int)
    {
        self.name = name
        self.value = value
    }

    static var A = AClass(name: "A", value: 1)
    static var B = AClass(name: "B", value: 2)
}

要将A和B作为AClass实例使用:

let objA = AClass.A
print(objA.name)
let objB = AClass.B
print(objB.name)

答案 2 :(得分:0)

我想这就是你要找的东西

class AClass {
 var name = "Name"
 var value = 0

 static var dataDict = [String: AClass]()

 init(name: String) {
  self.name = name
 }


static func someMethod(name: String) -> AClass {
 if let obj = AClass.dataDict[name] {
  return obj
} else {
  AClass.dataDict[name] = AClass(name: name)
  return AClass.dataDict[name]!
}

}

}

获取AClass的对象,如:

let obj = AClass.someMethod(stringReturnValue) // AClass.someMethod("A") 

//这里如果已经在AClass.dataDict中使用此键存在AClass对象,那么它将返回该对象创建一个并将其存储在dataDict中。