Open TaekH opened 7 months ago
본문과 같은 구조로 UserDefaultsManager
를 구성중이고, set
의 경우 error
를 throw
하도록 개선할 예정입니다.
static func set<Element>(_ value: Element?, forKey key: String) throws where Element: Codable {
guard let value = value else { return }
do {
let encodedData = try JSONEncoder().encode(value)
userDefaults?.set(encodedData, forKey: key)
} catch {
logger.log(
level: .error,
message: .init(stringLiteral: error.localizedDescription)
)
//TODO: UserDefaults 를 위한 Error를 따로 구성할지 고민 필요
throw FileError.fileSaveError(error)
}
}
UserDefaultsManager를 구현합니다.
현재 중대한학식의 경우 중앙대에만 중점적으로 맞춰져있는 구조이기 때문에, 유저가 설정한 기본 캠퍼스, 그 캠퍼스에 해당하는 카페테리아의 정렬만
UserDefaults
데이터로 저장하도록 구현되면 됩니다. 그러나 추후 학교의 확장의 경우UserDefaults
에는 학교, 해당하는 학교에 대한 캠퍼스, 캠퍼스에 대한 카페테리아 모두가 저장되어야 합니다. 또한 이를 불러오는UserInfoRepository
또한 해당하는 학교와 그에 따른 캠퍼스, 카페테리아를UserDefaults
데이터에 접근해서 불러와야하므로 따로 구조를 갖도록UserDefaults
를 초기에 설정하는 것이 맞다고 생각했습니다.UserDefaultsManager
의 구조는 기본적으로 개발자 선에서 컨트롤 할 수 있는DataKey
와UniversityID
에 따라StringKey
를 만들어서 저장할 수 있도록 구현할 예정입니다.또한
UserDefaults
의fetch
와get
구조는 사용자의universityID
를 갖는DataKey
를 통해UserUniversityDTO
를 불러오는 방식으로 구현될 예정입니다.