오늘의 학습
나는 이 방법을 선택했다.
다른 방법은 어떻게 할 수 있는지 생각을 하지 않았는데,
클로저를 활용해서 데이터를 전달하되, 이전 단계로 계속해서 이동할 수 있는지 조차 몰랐었다.
나의 생각은 공용으로 데이터를 받아 드리는 객체가 존재한다면 데이터 보관 및 정리가 용이할 것 같다는 생각을 했다.
더불어 특정 행동을 담당하는 객체 하나를 생성하게 되다보니 더욱 객체 지향적인 코드에 맞지 않을까 싶었다.
class TodoManager{
static let shared = TodoManager()
private let userDefaults = UserDefaults.standard
static var list: [Todo] = [
Todo(id: 0, title: "여러분~", isCompleted: false, timeStamp: .now),
Todo(id: 1, title: "여러분~~", isCompleted: false, timeStamp: .now),
Todo(id: 2, title: "부~자 되세요~", isCompleted: false, timeStamp: .now),
Todo(id: 3, title: "꼭이요~~~", isCompleted: false, timeStamp: .now),
Todo(id: 4, title: "한국 광고", isCompleted: false, timeStamp: .now),
Todo(id: 5, title: "한국 타이어", isCompleted: false, timeStamp: .now),
Todo(id: 6, title: "탕수육", isCompleted: false, timeStamp: .now)
]
static var completedList: [Todo] = []
...
중략
...
}
위처럼 해당 클래스를 공용으로 처리할 수 있도록 타입 프로퍼티를 생성했고, static 메서드를 일부 생성하여 해당 객체에서 전체적으로 처리를 할 수 있도록 만들었다.
아직 코드를 제대로 이해하고 있지 않아서 뜯어봐야 하는 입장이다.
하지만 지금까지 이해했을 때는 데이터를 담는 cell에서 직접 입력 받은 데이터를 테이블뷰를 담고 있는 ViewController로 넘기고, 해당 데이터를 다시 메인으로 전달 - 정제하여 완료된 값만 다른 테이블 뷰에서 보여질 수 있도록 정리가 가능하다고 이해했다.
여기서 특징은 클로저를 활용해서 VC와 Cell 등에서 직접 데이터를 전달할 수 있다는 점이다.
이전처럼 전역 데이터를 관리하는 DataManager 없이도 가능하다는 점에서 클로저를 잘만 구현했을 때는 사용할 수 있는 방법이 정말 다양할 수 있겠다는 생각을 하게 됐다.
*한가지 놀랐던 점은 cell에서 데이터를 직접 viewController로 넘길 수 있다는 점이었다...
이렇게 되면 DataManager라는 객체를 만드는 이유가 뭘까?