우선 이런 logic이 필요한 이유를 설명하겠다.
TabbarController들은 각각 독자전인 ViewController이다.
즉, 데이터를 이동하는 것이 가능은 하돼 이동시킨다는 개념을 이용하면 비효율적인 점이 존재한다.
그래서 내가 생각한 logic은 데이터를 관리하는 Object를 만드는 것이다.
나는 Login을 하게 되면 위에 있는 TabbarController로 넘어오도록 구현했었다.
그런데 TabbarController에서 데이터를 받는 것까지 완성했지만, 바로 첫번째 ViewController로 이동했다.
TabbarController에서 첫번째 ViewController로 이동했는데, 데이터를 어떻게 이동해야 할지 고민하다가 결론지었다.
독립적인 ViewController들 사이에 데이터를 이동하는 것보다 LoginUser 데이터 관리는 Object로 관리하는 것이 유지보수 및 관리에 용이하다고 판단해서 아래와 같이 코드를 구현했다.
import UIKit
class LoginUser: NSObject {
static var loginUser: User?
static var isLoginUser: Bool {
if self.loginUser != nil {
return true
} else {
return false
}
}
static func loginUserReplacement(loginUser: User) {
self.loginUser = loginUser
}
static func logoutUser() {
self.loginUser = nil
}
}
그래서 NSObject를 통해 LoginUser를 따로 관리하기로 했다. 어디서든 LoginUser의 정보가 필요한 곳에서는 바로바로 사용할 수 있게 type property, method를 선언했다. 이렇게 되면 "내가 쓴 글, 내가 쓴 댓글"과 같이 사용자의 정보가 필요한 곳이 있으면 바로바로 이 정보를 가져올 수 있고 효율적이라고 생각했다.
물론, loginUser을 바로 접근하지 못하도록 private를 선언하거나, login 이후에는 loginUser의 정보가 계속 필요하다는 점은 존재한다고 생각한다. 하지만, 이렇게 발전하는 모습이 대견하지 않은가!!! 하하하핳하. 오늘은 여기까지
'IOS application > Swift' 카테고리의 다른 글
25. [Swift] 고차함수 - map, flatMap, compactMap (0) | 2021.08.11 |
---|---|
24. [Swift] 고차함수 - forEach, filter, reduce (0) | 2021.08.11 |
21. iOS TTS (Text-To-Speech) (0) | 2021.06.28 |
20. swift change multiple view by segmented control (0) | 2021.06.09 |
19. 여러개의 ViewController를 한꺼번에 dismiss (0) | 2021.05.26 |