2014-12-31 53 views
6

在swift中,在由迭代的索引值管理的循環中,我想創建一個變量,該變量的變量名稱是「person_」和當前循環索引的串聯。使用動態名稱在swift中創建變量

所以我的循環結束了,如創建變量:

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

我沒有運氣網上搜索所以我在這裏發帖。

謝謝!

+5

這是不好的做法。有可能有更好的解決方案來實現你正在嘗試做的事情。如果你提供更多的上下文,我可能會提供幫助。 – David

回答

1

讓NAME = 「_人\(指數)」

然後添加名在循環之前聲明的可變數組。

這樣的事情?

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]來訪問那個人。

0

在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"