ToDo List 응용 프로그램을 만들고 있습니다. 목록에있는 항목이 완료되었음을 알리기 위해 스위치 선택을 저장하고 스위치가 켜져있는 날짜를 저장하려고합니다. 배열을 저장했지만 날짜와 스위치를 저장하는 방법을 알 수 없습니다. 지금은 첫 번째 항목 만 보여줄 것입니다.저장 방법 신속한 전환 값 및 날짜 4
import Foundation
class ToDoListManager {
private static let userDefaults = UserDefaults.standard
private static let listKey = "ToDoListKey"
var toDoItems: [ToDoItem]
var completedSwitch: Bool
init() {
self.toDoItems = ToDoListManager.retrieve() ?? [ToDoItem]()
//* I don't know how to initialize my completedSwitch
/* self.completedSwitch =
*//
}
func getItems() -> [ToDoItem] {
return self.toDoItems
}
func numberItems() -> Int {
return self.toDoItems.count
}
func addItem(item: ToDoItem) {
self.toDoItems.append(item)
ToDoListManager.store(items: self.toDoItems)
}
func removeItem(index: Int) {
self.toDoItems.remove(at: index)
}
func getFirstItem() -> ToDoItem? {
return self.toDoItems.first
}
func getDateCompleted() -> Bool {
if completedSwitch == true{
return true;
} else {
return false;
}
}
private class func store(items:[ToDoItem]) {
let encoder = JSONEncoder()
if let encoded = try? encoder.encode(items) {
userDefaults.set(encoded, forKey: listKey)
}
userDefaults.synchronize()
}
private class func retrieve() -> [ToDoItem]? {
if let items = userDefaults.value(forKey: listKey) as? Data {
let decoder = JSONDecoder()
if let objectsDecoded = try? decoder.decode(Array.self, from:
items) as [ToDoItem] {
return objectsDecoded
}
else {
return nil
}
}
else {
return nil
}
}
}
내 VC :
import UIKit
class DetailViewController: UIViewController {
@IBOutlet weak var descriptionLabel: UILabel!
@IBOutlet weak var dateAddedLabel: UILabel!
@IBOutlet weak var completed: UISwitch!
@IBOutlet weak var dateCompletedLabel: UILabel!
@IBAction func completedSwitch(_ sender: UISwitch) {
if sender.isOn {
dateCompletedLabel.isHidden = true
}
else {
dateCompletedLabel.isHidden = false
}
}
var toDoItem: ToDoItem! {
didSet(newItem) {
self.refreshUI()
}
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
refreshUI()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func refreshUI() {
if(toDoItem == nil) {
return
}
descriptionLabel?.text = toDoItem.itemDescription
completed.setOn(toDoItem.completed, animated: true)
dateAddedLabel?.text = toDoItem.getDateAdded()
dateCompletedLabel?.text = toDoItem.getDateCompleted()
}
}
스위치에 @IBAction을 만들고 코드에 Date() 및 그 값을 저장 하시겠습니까? – GIJOW
s @ IBAction을 추가하면 Bool 유형의 값에 구성원이 없음을 알리는 오류가 발생합니다 .isOn –
변수 Bool을 작성 중입니다. UISwitch 유형'@IBAction func completedSwitch (_ sender : UISwitch)를 사용해야합니다. {Sender.isOn}' – GIJOW