2016-10-27 4 views
-2

Ich bin in einem Timer-Projekt, das einen Wert aus einer Variablen durch Abwicklungsabschnitt nimmt, um es an einen anderen Ansichtscontroller zu übergeben, dann seinen Wert an ein Array anfügen, das zum Einfügen einer Zeile verwendet werden soll Mit dem Namen der Aufgabe, wann immer der Benutzer die Schaltfläche zum Speichern gedrückt hat, muss ich das Ergebnis dauerhaft speichern, aber ich bin verwirrt, welche Daten sollte ich den Wert der Variablen selbst, der Zeile oder des Arrays speichern?So speichern Sie Daten dauerhaft in Swift 3

var taskList = [String]() 

@IBAction func saveToTaskList (segue: UIStoryboardSegue) { 

    let newItemViewController = segue.source as! AddTaskTableViewController 
    let name = newItemViewController.itemName 
    let date = newItemViewController.date 

    print("itemName passed is: \(name)") 

    if name == "" { 

    } 
    else { 
     print(date) 
     taskList.append(name!) 
     let indexToInsert = taskList.count == 0 ? 0 : taskList.count - 1 
     let indexPath = IndexPath(row: indexToInsert, section: 0) 
     tableView.insertRows(at: [indexPath], with: UITableViewRowAnimation.automatic) 
    } 

} 

add task view controller Timer/Task List

+0

Ich würde vorschlagen, sie als Array zu speichern. Wenn Sie also für jede Aufgabe ein Objekt verwenden, würden Sie ein Array dieser Objekte speichern. –

Antwort

0

Ok, dank den Hauch von Matt Le Fleur löste ich das Problem, indem Objekte wie unten verwenden:

@IBAction func saveToTaskList (segue: UIStoryboardSegue) { 

    let newItemViewController = segue.source as! AddTaskTableViewController 
    var name = newItemViewController.itemName 
    let date = newItemViewController.date 

    let itemsObject = UserDefaults.standard.object(forKey: "items") 

    var items:[String] 

    if let tempItems = itemsObject as? [String] { 

     items = tempItems 

     items.append(name!) 

     print(items) 

    } else { 

     items = [name!] 

    } 

    UserDefaults.standard.set(items, forKey: "items") 

    name = "" 

} 

Dann eine ViewDidAppear wie unten hinzugefügt:

override func viewDidAppear(_ animated: Bool) { 
    let itemsObject = UserDefaults.standard.object(forKey: "items") 


    if let tempItems = itemsObject as? [String] { 

     items = tempItems 

    } 

    tableView.reloadData() 
} 
Verwandte Themen