[swift] SwiftyUserDefaults를 사용하여 최근 사용한 파일 목록을 저장하는 방법은 어떻게 되는가?

SwiftyUserDefaults는 UserDefaults를 간편하게 사용할 수 있는 라이브러리이며, 파일 목록과 같은 데이터를 저장하기에 적합합니다. 이 라이브러리를 사용하여 최근 사용한 파일 목록을 저장하는 방법을 알아보겠습니다.

먼저, SwiftyUserDefaults를 설치하기 위해 Cocoapods를 사용하겠습니다. Podfile에 다음과 같이 추가합니다:

pod 'SwiftyUserDefaults'

설치한 후, Xcode 프로젝트를 업데이트합니다:

$ pod install

이제 코드에서 SwiftyUserDefaults를 사용할 수 있습니다. 먼저, UserDefaults에 저장할 최근 파일 목록을 정의합니다. 예를 들어, 최근에 사용한 파일 이름을 저장하는 배열을 생성하겠습니다:

import SwiftyUserDefaults

// 최근 파일 목록을 저장할 Array
var recentFiles: [String] {
    get {
        return Defaults[\.recentFiles]
    }
    set {
        Defaults[\.recentFiles] = newValue
    }
}

extension DefaultsKeys {
    static let recentFiles = DefaultsKey<[String]>("recentFiles")
}

위 코드에서 recentFiles 배열을 Defaults[\.recentFiles]로 저장하고 불러올 수 있습니다. DefaultsKey를 사용하여 키 값을 정의합니다.

이제 최근 파일을 추가하는 코드를 작성해보겠습니다. 예를 들어, 파일을 열 때마다 최근 파일 목록에 해당 파일을 추가하고, 최대 5개의 최근 파일만 유지하도록 설정하겠습니다:

func addRecentFile(_ file: String) {
    if recentFiles.contains(file) {
        recentFiles.removeAll(where: { $0 == file })
    }
    
    recentFiles.insert(file, at: 0)
    if recentFiles.count > 5 {
        recentFiles.removeLast()
    }
}

위 함수는 최근 파일 목록에 입력받은 파일 이름을 추가합니다. 만약 이미 최근 파일 목록에 존재하는 파일이라면 해당 파일을 삭제한 후, 가장 최신 파일 목록으로 추가합니다. 최대 5개의 최근 파일만 유지하기 위해 6번째 파일부터는 마지막 파일을 제거합니다.

이제 최근 파일 목록을 사용하는 예를 살펴보겠습니다. 예를 들어, 최근 파일 목록을 테이블 뷰에 표시하는 경우 다음과 같이 사용할 수 있습니다:

import UIKit

class RecentFilesViewController: UIViewController {
    
    @IBOutlet weak var tableView: UITableView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        tableView.dataSource = self
    }
}

extension RecentFilesViewController: UITableViewDataSource {
    
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return recentFiles.count
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
        cell.textLabel?.text = recentFiles[indexPath.row]
        return cell
    }
}

위 코드에서 recentFiles 배열을 테이블 뷰의 데이터 소스로 사용하여 최근 파일 목록을 표시합니다.

이제 SwiftyUserDefaults를 사용하여 최근 사용한 파일 목록을 저장하는 방법에 대해 알아보았습니다. 이를 응용하여 다양한 환경에서 사용자의 파일 관리를 구현할 수 있습니다.


참고 자료: