初始化数组中的索引

时间:2019-02-05 17:00:38

标签: swift

我正在创建一个具有自动索引的类。我已经在下面编写了可行的代码,但其中包含一种我无法解决的非常草率的方法。我在下面设计了一个简单的游乐场演示。我要这是为了改善我的代码和对Swift的了解。

注意,我正在创建一个称为tokenParts的IndexPairs数组。索引使用功能“ getUniqueIdentifier()”添加到类中。如下所述,它可以正常工作,但我感觉我没有正确使用它。

我使用语句“ tokenParts.append(...”)添加到数组中,在该语句中,我具有“ index:1”,因为Swift表示我必须在其中包含用于索引的内容。此分配将被忽略,但是我不能确定如何在append语句中删除此参数。

我敢肯定有更好的方法。

class IndexPairs
{
   var index: Int
   var token: String
   var label: String

   private static var identifierFactory = -1

   private static func getUniqueIdentifier() -> Int {
    identifierFactory += 1
    return identifierFactory
    }

    init(index: Int, token: String, label: String) {
        self.index = IndexPairs.getUniqueIdentifier()
        self.token = token
        self.label = label
    }
}

 var tokenParts: [IndexPairs] = []

for i in 0...4 {
    tokenParts.append(IndexPairs( index: 1, token : "token"+String(i), label: "label"+String(i))) //index: 1 -- works
}

for i in 0...4 {
    print("\(tokenParts[i].index) \(tokenParts[i].token) \(tokenParts[i].label)")
}

打印循环显示以下内容,因此可以正常工作。打印:

0 token0 label0
1 token1 label1
2 token2 label2
3 token3 label3
4 token4 label4   

1 个答案:

答案 0 :(得分:1)

只需将您的init函数更改为

init(token: String, label: String) {
    self.index = IndexPairs.getUniqueIdentifier()
    self.token = token
    self.label = label
}

这在操场上对我有用