2016-03-01 107 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的代碼上面工作... –