2016-03-01 64 views
-1

必须有一个for循环,可以简化下面的代码:Swift 2 - 连接字符串和数字?

let defaults = NSUserDefaults.standardUserDefaults() 

    self.item01.text = defaults.objectForKey("item01") as? String 
    self.item02.text = defaults.objectForKey("item02") as? String 
    self.item03.text = defaults.objectForKey("item03") as? String 
    //... 
    self.item14.text = defaults.objectForKey("item14") as? String 
    self.item15.text = defaults.objectForKey("item15") as? String 
+0

所以你问如何把这个for循环?目前还不清楚你在问什么。 – DeyaEldeen

+0

是的。有一个for循环可以简化代码。 – Rook

+0

这是怎么回事?问题和代码不匹配,我们连接,还是我们在这里分配? – Knight0fDragon

回答

-1
/* Number Incrementing */  
var number = 1 

/* Array of Items */ 
let itemsArray = [item01, item02, item03...] 

/* Get User Defaults */ 
let defaults = NSUserDefaults.standardUserDefaults() 

for item in itemsArray { 

    if number < 10 { 
     item.text = defaults.objectForKey("item0\(number)") as? String 
    } else { 
     item.text = defaults.objectForKey("item\(number)") as? String 
    } 
    number++ 
} 
+0

ZGski似乎与我之后最接近,尽管如果可能的话,我想不用阵列来完成它?项目的数量可能会达到数百个,并且必须有一种使用循环创建'itemXX'的方法。 –

0

要连接一个数字字符串,你必须先将其转换:

"item"+String(num) 

你也可以使用插值法在文字内创建其他值的字符串:

"item\(num)" 

但或许在这里最好的办法是将字符串以0填充格式:

String(format: "item%02d", num) 
0

下面是如何自动生成阵列:

var arr = [String]() 
for i in 1...1000 { 
    arr.append(String(format: "item%02d", i)) 
} 
arr // ["item01", "item02", "item03", ...] 
+0

似乎无法得到此与ZG的代码上面工作... –