[swift] SwiftyUserDefaults를 사용하여 사용자 기사 북마크 관리하기

이번 블로그 포스트에서는 SwiftyUserDefaults 라이브러리를 사용하여 사용자 기사 북마크를 어떻게 관리할 수 있는지 알아보겠습니다.

SwiftyUserDefaults 소개

SwiftyUserDefaults는 UserDefaults를 관리하기 위한 간편한 인터페이스를 제공하는 Swift 라이브러리입니다. UserDefaults를 사용하여 간단한 데이터를 앱 내에 저장할 수 있습니다. SwiftyUserDefaults를 사용하면 복잡한 UserDefaults 코드를 간결하게 작성할 수 있으며, 타입 안전성을 보장받을 수 있습니다.

시작하기 전에

먼저 SwiftyUserDefaults 라이브러리를 설치해야 합니다. Podfile에 다음과 같이 추가합니다:

pod 'SwiftyUserDefaults'

그리고 터미널에서 pod install 명령어를 실행하여 라이브러리를 설치합니다.

사용자 기사 북마크 관리하기

이제 SwiftyUserDefaults를 사용하여 사용자 기사 북마크를 관리하는 방법을 알아보겠습니다. 사용자가 기사를 북마크하고 싶을 때, 해당 기사의 ID를 북마크 리스트에 저장합니다. 그리고 사용자가 북마크를 제거하고 싶을 때, 해당 기사의 ID를 북마크 리스트에서 제거합니다.

import SwiftyUserDefaults

extension DefaultsKeys {
    static let bookmarkedArticleIDs = DefaultsKey<[Int]>("bookmarkedArticleIDs")
}

class ArticleBookmarkManager {
    
    static func addBookmark(articleID: Int) {
        var bookmarkedArticleIDs = Defaults[\.bookmarkedArticleIDs]
        bookmarkedArticleIDs.append(articleID)
        Defaults[\.bookmarkedArticleIDs] = bookmarkedArticleIDs
    }
    
    static func removeBookmark(articleID: Int) {
        var bookmarkedArticleIDs = Defaults[\.bookmarkedArticleIDs]
        if let index = bookmarkedArticleIDs.firstIndex(of: articleID) {
            bookmarkedArticleIDs.remove(at: index)
        }
        Defaults[\.bookmarkedArticleIDs] = bookmarkedArticleIDs
    }
    
    static func isBookmarked(articleID: Int) -> Bool {
        let bookmarkedArticleIDs = Defaults[\.bookmarkedArticleIDs]
        return bookmarkedArticleIDs.contains(articleID)
    }
}

위의 코드는 ArticleBookmarkManager 클래스를 사용하여 사용자 기사 북마크를 관리하는 방법을 보여줍니다. DefaultsKeys 구조체를 사용하여 UserDefaults 키를 정의하고, Defaults[\\\.bookmarkedArticleIDs]를 사용하여 해당 키에 접근합니다.

addBookmark(articleID:) 함수를 사용하여 기사를 북마크하고, removeBookmark(articleID:) 함수를 사용하여 북마크를 제거하며, isBookmarked(articleID:) 함수를 사용하여 기사가 북마크되어 있는지 확인할 수 있습니다.

결론

SwiftyUserDefaults를 사용하여 간단하게 사용자 기사 북마크를 관리하는 방법을 알아보았습니다. SwiftyUserDefaults를 사용하면 UserDefaults를 더 쉽게 사용할 수 있으며, 코드 가독성과 유지 보수성을 향상시킬 수 있습니다. 추가적으로 SwiftyUserDefaults의 다른 기능과 옵션도 살펴보면 유용한 기능을 더 많이 활용할 수 있을 것입니다.

참고 자료: