이번에는 블록와이드의 키워드 뉴스를 사용자가 손쉽게 원하는 키워드로 편집할 수 있는 기능을 추가합니다.
현재 블록와이드의 키워드 뉴스는 var categories: [String] 문자 배열에 따라서 forEach로 크롤링을 하고 탭들이 생성되도록 설계되어 있습니다.
그러므로 기능 개발의 목표는 사용자가 문자 배열을 편집하고 기기에 저장하는 것입니다.
관심목록을 저장할 때보다는 조금 더 간편한 @AppStorage를 사용하려고 합니다.
다만, @AppStorage는 Array를 지원하지 않기 때문에 다음과 같은 에러 메세지가 발생하게 됩니다.
따라서 @AppStorage에서 배열을 사용할 때는 다음의 익스텐션을 추가해주어야 합니다.
extension Array: RawRepresentable where Element: Codable {
public init?(rawValue: String) {
guard let data = rawValue.data(using: .utf8),
let result = try? JSONDecoder().decode([Element].self, from: data)
else {
return nil
}
self = result
}
public var rawValue: String {
guard let data = try? JSONEncoder().encode(self),
let result = String(data: data, encoding: .utf8)
else {
return "[]"
}
return result
}
}
추가한 이후에는 정상적으로 빌드되는 것을 확인할 수 있습니다. :)
앞으로는 배열에 추가, 삭제, 순서 편집 등의 기능을 추가하는 작업을 할 수 있겠습니다!
참고 문서:
SwiftUI: What is @AppStorage property wrapper
I used to save important App data like login credentials into UserDefaults using the following statement: UserDefaults.standard.set("sample@email.com", forKey: "emailAddress") ...
stackoverflow.com
@AppStorage와 UserDefaults
안녕하세요. iOS 개발자 에이든입니다!👦🏻 App에 간단하게 값들을 저장하고 싶을 때 사용하는 방법!!🤔 바로바로 UserDefaults!!! 이번 시간에는 UserDefaults와 iOS 14부터 새로 생긴 SwitUI의 AppStorage에
aiden-ios.tistory.com
'Project > SwiftUI 블록와이드' 카테고리의 다른 글
[블록와이드] 뉴스 검색 기능 추가, 보완하고 싶은 점 (0) | 2023.02.14 |
---|---|
[블록와이드] 뉴스 키워드 편집 기능 추가 (0) | 2023.02.11 |
해결해야하는 콘솔로그: Bound preference PositionPreferenceKey tried to update multiple times per frame. (0) | 2023.01.25 |
앱스토어 거절 해결: Guideline 2.3.1 - Performance (0) | 2023.01.11 |
앱스토어 거절 사유: Guideline 2.3.1 - Performance (0) | 2023.01.05 |
댓글