[swift] Swift에서 삭제한 파일의 검색 기록 저장하는 방법

Swift 애플리케이션에서 사용자가 파일을 삭제하면 이를 추적하고 검색할 수 있는 기록을 유지하고 싶을 때가 있습니다. 예를 들어 사용자가 실수로 파일을 삭제했거나, 파일을 잘못 저장한 경우를 대비해 삭제한 파일의 검색 기록을 저장하는 방법에 대해 알아보겠습니다.

1. 파일 삭제 감지

먼저, 사용자가 파일을 삭제할 때마다 해당 작업을 감지하는 방법이 필요합니다. 파일 시스템 변경을 감지하기 위해 NSFilePresenter 프로토콜 및 NSFilePresenter 프로토콜을 준수하는 클래스를 활용할 수 있습니다.

import Foundation

class FilePresenter: NSObject, NSFilePresenter {
    // 파일이나 디렉터리가 삭제될 때 호출됨
    func accommodatePresentedItemDeletion(completionHandler: @escaping (Error?) -> Void) {
        // 파일 삭제를 감지하고 처리하는 로직 구현
        // 여기에 삭제된 파일에 대한 정보를 저장하는 로직 추가
    }
  
    // 다른 메서드들은 생략
}

FilePresenter 클래스는 NSFilePresenter 프로토콜을 준수하며, 파일 또는 디렉터리가 삭제될 때 호출되는 accommodatePresentedItemDeletion 메소드를 구현합니다.

2. 검색 기록 저장

검색 기록을 저장하기 위해 파일 시스템 변경을 감지하는 동안 삭제된 파일에 대한 정보를 저장할 수 있는 방법이 필요합니다.

func accommodatePresentedItemDeletion(completionHandler: @escaping (Error?) -> Void) {
    let deletedFileURL = URL(fileURLWithPath: "path_to_deleted_file")
    let deletedFileInformation = ["name": deletedFileURL.lastPathComponent, "deletedAt": Date()]
    
    // 삭제된 파일에 대한 정보를 저장
    UserDefaults.standard.set(deletedFileInformation, forKey: "DeletedFileInformation")
    
    // completion handler 실행
    completionHandler(nil)
}

위 코드에서는 accommodatePresentedItemDeletion 메소드 내에서 삭제된 파일의 정보를 딕셔너리로 저장하고, UserDefaults를 사용하여 해당 정보를 로컬에 저장합니다.

3. 검색 및 복구

삭제된 파일의 검색 및 복구는 저장된 정보를 활용하여 사용자에게 제공될 수 있습니다. 저장된 정보를 통해 삭제된 파일에 대한 검색 및 복구 기능을 제공할 수 있습니다.

if let deletedFileInformation = UserDefaults.standard.dictionary(forKey: "DeletedFileInformation") {
    let deletedFileName = deletedFileInformation["name"] as? String
    let deletedAt = deletedFileInformation["deletedAt"] as? Date
    // 검색된 삭제된 파일 정보 활용
} else {
    // 저장된 정보가 없는 경우
}

저장된 삭제된 파일 정보를 활용하여 필요한 기능을 구현할 수 있습니다.

이제 Swift 애플리케이션에서 삭제한 파일의 검색 기록을 저장하는 방법에 대해 알아보았습니다. 삭제된 파일의 정보를 감지하고 저장하여 사용자에게 검색 및 복구 기능을 제공할 수 있습니다.