2017-08-21 180 views
0

試圖學習做一個todolist;我有兩個viewcontrollers,一個存儲和一個顯示在一個表視圖。我的表返回零;我哪裏錯了?Swift UserDefaults返回零

存儲視圖:

var toDoStorage = UserDefaults.standard.object(forKey: "toDo") 
    var toDoList = [String]() 

@IBAction func saveButton(_ sender: Any) { 
    if (toDoStorage as? [String]) != nil { 
     toDoList.append(itemLabel.text!) 
    } else { 
     toDoList = [itemLabel.text!] 
    } 
    UserDefaults.standard.set(toDoList, forKey: "todo") 
    itemLabel.text = "" 
} 

顯示視圖:

var toDo = [UserDefaults.standard.object(forKey: "toDo")] 

public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int{ 
    return toDo.count 
} 

public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 

    let cell = UITableViewCell(style: UITableViewCellStyle.default, reuseIdentifier: "IDCell") 
    cell.textLabel?.text = String(describing: toDo[indexPath.row]) 
    return cell 
} 

回答

1

只要使用字符串這個你存儲陣列

var toDo = UserDefaults.standard.stringArray(forKey: "todo") ?? [String]() 
+0

注意待辦事項是小D –

+0

工作!我必須使用stringArray,因爲數據已經是數組了嗎? – Dev0urCode

+0

不,你可以使用對象,但更好地說數組字符串 –

0

確保你的鑰匙匹配.. 您花了在您的密鑰錯字..「todo」!=「待辦事項」

+0

謝謝我沒有看到 – Dev0urCode

+0

接受它作爲答案,如果這有幫助:) –

+0

這是答案的一部分我確定但如果我只糾正錯字我有一個顯示錯誤在我的表 上述解決方案工作 – Dev0urCode