[Ios App] BookMark 기능
[Ios App] BookMark 기능
로컬 설정같은 정보를 저장하는 방식에는 여러가지가 있다. 처음엔 DB.json 파일에 var isFavorite: Bool 방식으로 키고 끄는 방식을 생각했는데, DB를 수정해야하는 번거로움 때문에 보류.
보통 “즐겨찾기”같은 개인정보는 JSON 대신 Swift에서 지원하는 “UserDefaults”를 사용해보려 한다.
기본 사용 구조
1
2
3
4
5
6
7
8
9
10
11
12
struct FavoritesManager {
private static let key = "favorites"
static func saveFavorites(_ favorites: [String]) {
UserDefaults.standard.set(favorites, forKey: key)
}
static func loadFavorites() -> [String] {
return UserDefaults.standard.stringArray(forKey: key) ?? []
}
}
Trouble Shooting
버튼을 누르면 즐겨찾기 저장은 되지만 바로 새로고침되지 않음 (다른 View로 갔다 와야 refresh 됨)
-> @State 로 변화를 감시 해줘야하는데 ScriptListView를 List 형식으로 구현해놔서 매번 모든 리스트를 다시 로드해야 되는 과정 필요.
-> List 목록 하나를 ScriptRowView로 구현후 List 목록 하나씩 @State로 추적하는 방식 사용
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
struct ScriptRowView: View {
let script: Script
@State private var isFavorite: Bool
init(script: Script) {
self.script = script
self._isFavorite = State(initialValue: FavoritesManager.isFavorite(scriptID: script.title))
}
var body: some View {
HStack {
// 썸네일 + 제목 + 즐겨찾기 버튼 구현
}
}
}
이렇게 행 하나를 @State 로 관리해주면 !
즉각적인 이미지 refresh 가 가능해진다.
This post is licensed under CC BY 4.0 by the author.