2016-10-27 3 views
-2

Я нахожусь в проекте Timer, который принимает значение из переменной через unind segue, чтобы передать его другому контроллеру представления, затем добавьте его значение в массив, который должен использоваться для вставки строки с именем задачи всякий раз, когда пользователь нажал кнопку сохранения, мне нужно сохранить результат навсегда, но я смущен тем, какие данные я должен сохранить значение самой переменной, строки или массива?Как хранить данные навсегда в 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

Я бы предложил хранить их в виде массива. Поэтому, если вы используете объект для каждой задачи, вы должны сохранить массив этих объектов. –

ответ

0

Хорошо, благодаря намека на Matt Le Fleur я решить проблему с помощью объектов, как показано ниже:

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

} 

Затем добавили ViewDidAppear, как показано ниже:

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


    if let tempItems = itemsObject as? [String] { 

     items = tempItems 

    } 

    tableView.reloadData() 
} 
Смежные вопросы