使用动态名称在swift中创建变量

时间:2014-12-31 06:09:45

标签: variables swift concatenation

在swift中,在由迭代的索引值管理的循环中,我想创建一个变量,其变量名称是“person_”和当前循环索引的串联。

所以我的循环最终会创建如下变量:

var person_0 = ...
var person_1 = ...
var person_2 = ...
etc...

我没有在线搜索,所以我在这里发帖。

谢谢!

4 个答案:

答案 0 :(得分:3)

一种解决方案是将所有变量存储在数组中。您存储在该数组中的变量的索引将对应于您尝试包含在变量名中的索引值。

在视图控制器的顶部创建一个实例变量:

var people = [WhateverTypePersonIs]()

然后创建一个循环,在该实例变量中存储您想要的许多人:

for var i = 0; i < someVariable; i++ {
    let person = // someValue of type WhateverTypePersonIs
    people.append(person)
}

例如,如果您需要按照尝试解决问题的方式获取“person_2”,则可以使用people[2]访问该人。

答案 1 :(得分:1)

让name =&#34; person _ \(index)&#34;

然后将名称添加到循环之前声明的可变数组。

那样的东西?

答案 2 :(得分:1)

在Swift中,无法创建动态变量名称。您要实现的目标是Array的典型用例。

创建Array并将其填入您的个人数据。之后,您可以通过索引访问这些人:

var persons: [String] = []

// fill the array
for i in 0..<10 {
    persons.append("Person \(i)")
}

// access person with index 3 (indexes start with 0 so this is the 4th person)
println(persons[3])  // prints "Person 3"

答案 3 :(得分:0)

你想要做的事情在swift中是不可能的。变量名只适用于人类(特别是编译语言),这意味着它们在编译阶段被剥离。

但如果你真的想要这样做,那么代码生成工具就是你的选择。找到一个合适的代码生成工具,在构建阶段运行它。