2017-08-21 1 views
0

Essayer d'apprendre à faire un todolist; J'ai deux viewcontrollers, un pour stocker et un pour montrer dans une vue de tableau. ma table revient nulle; Où vais-je mal?Swift UserDefaults renvoie zéro

vue Stockage:

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 = "" 
} 

vue Affichage:

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 
} 

Répondre

1

Il suffit d'utiliser ce que vous stocker un tableau de chaînes

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

note todo est petit D –

+0

Cela a fonctionné! Dois-je utiliser stringArray parce que les données sont déjà un tableau? – Dev0urCode

+0

non vous pouvez utiliser l'objet mais mieux vaut dire array array –

0

Assurez-vous que vos clés correspondent .. Vous avez donné un typo dans votre clé .. "todo"! = "toDo"

+0

Merci, je n'ai pas vu que – Dev0urCode

+0

l'accepter comme réponse si cela a aidé :) –

+0

c'était une partie de la réponse Im sûr mais si je corrige seulement la faute de frappe j'ai eu une erreur d'affichage dans mon tableau la solution ci-dessus a fonctionné – Dev0urCode