Как добавить два значения с помощью UserDefault - PullRequest
0 голосов
/ 03 марта 2019

Я пытаюсь создать простое приложение ToDo в Swift.

Я хочу добавить не только задачу, но и Date, но я не знаю, как добавить два значения в переменную.

Я хочу добавить текст от UIDatePicker до TodoAdded.

Не могли бы вы дать мне какой-нибудь совет, пожалуйста?

import UIKit

//Variable
var TodoAdded = [String]()

class AddController: UIViewController {

    //TextField
    @IBOutlet weak var TodoTextField: UITextField!

    //TextField for Date
    @IBOutlet weak var DateTextField: UITextField!
    var datePicker: UIDatePicker = UIDatePicker()

    //追加ボタンの設定
    @IBAction func TodoAddButten(_ sender: Any) {
        //Add typed text to variable
        TodoAdded.append(TodoTextField.text!)
        //Empty after tapped button
        TodoTextField.text = ""
        //Add to UD
        UserDefaults.standard.set( TodoAdded, forKey: "TodoList" )
    }

    override func viewDidLoad() {
        super.viewDidLoad()

        // Picker Setting
        datePicker.datePickerMode = UIDatePicker.Mode.dateAndTime
        datePicker.timeZone = NSTimeZone.local
        datePicker.locale = Locale.current
        DateTextField.inputView = datePicker

        // 
        let toolbar = UIToolbar(frame: CGRect(x: 0, y: 0, width: view.frame.size.width, height: 35))
        let spacelItem = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: self, action: nil)
        let doneItem = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(done))
        toolbar.setItems([spacelItem, doneItem], animated: true)

        // InputView
        DateTextField.inputView = datePicker
        DateTextField.inputAccessoryView = toolbar
    }

    // 
    @objc func done() {
        DateTextField.endEditing(true)

        // Format 
        let formatter = DateFormatter()
        formatter.dateFormat = "yyyy-MM-dd"
        DateTextField.text = "\(formatter.string(from: Date()))"
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}

1 Ответ

0 голосов
/ 03 марта 2019

Вы можете попытаться сохранить его как [String:[String]]

UserDefaults.standard.set([dateTextField.text!:todoAdded], forKey: "TodoList" )

Хороший подход -

struct Root:Codable {
    let date:Date
    let tasks:[String]
}

Затем используйте JSONDecoder / JSONEncoder для преобразования в объект / данныепосле этого вы можете легко сохранять / читать их

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...