Swift에서 UniformTypeIdentifiers 활용법: UTType과 데이터 전송

작성일 :

Swift에서 UniformTypeIdentifiers 활용법: UTType와 데이터 전송

UniformTypeIdentifiers는 iOS와 macOS에서 다양한 데이터 타입을 처리하고 정의하는 데 사용됩니다. Swift에서는 이를 활용하여 파일 형식과 데이터를 지정하고 전송할 수 있습니다. 이번 글에서는 UTType의 개념을 이해하고, 이를 이용하여 데이터를 전송하는 방법을 소개합니다.

UTType의 이해

UTTypeUniform Type Identifier의 약자로, 파일과 데이터를 식별하는 데 사용되는 표준 시스템입니다. 애플의 API는 파일 형식을 인식하고 처리하기 위해 이 식별자를 사용합니다. 예를 들어, 일반적인 파일 형식에는 public.jpeg, public.png, public.text 등이 있습니다.

UTType을 사용하면 파일 형식을 쉽게 정의하고 관리할 수 있으며, 데이터의 전송과 수신을 간단하게 처리할 수 있습니다. 먼저, UTType의 기본 사용법을 살펴보겠습니다.

swift
import UniformTypeIdentifiers

let jpegType = UTType.jpeg
print(jpegType.identifier) // "public.jpeg"

위 코드는 jpeg 포맷의 파일 타입 식별자를 참조하는 예제입니다. 다음 예제에서는 UTType을 활용하여 특정 파일의 타입을 검사하는 방법을 보여줍니다.

swift
import UIKit
import UniformTypeIdentifiers

func checkFileType(url: URL) -> Bool {
    guard let type = try? url.resourceValues(forKeys: [.contentTypeKey]).contentType else {
        return false
    }
    return type.conforms(to: .jpeg)
}

위 코드에서 URLResourceValues를 사용하여 파일의 콘텐츠 타입을 확인하고, 이 타입이 jpeg와 일치하는지를 검사합니다.

파일 선택과 데이터 전송

이제 사용자가 파일을 선택하고 해당 파일을 데이터 전송하는 방법을 알아보겠습니다. 이를 위해 UIDocumentPickerViewControllerNSItemProvider를 사용합니다.

파일 선택

먼저 사용자가 파일을 선택하는 방법을 살펴보겠습니다. File Picker를 표시하고 사용자가 선택한 파일의 URL을 얻기 위해 UIDocumentPickerViewController를 사용합니다.

swift
import UIKit
import UniformTypeIdentifiers

class ViewController: UIViewController, UIDocumentPickerDelegate {
    func selectFile() {
        let documentPicker = UIDocumentPickerViewController(forOpeningContentTypes: [UTType.jpeg, UTType.png])
        documentPicker.delegate = self
        documentPicker.allowsMultipleSelection = false
        self.present(documentPicker, animated: true, completion: nil)
    }

    func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) {
        guard let url = urls.first else { return }
        // 수행할 작업
    }
}

위 코드에서 .jpeg, .png 타입의 파일을 선택할 수 있는 UIDocumentPickerViewController를 생성하고, 파일이 선택되면 documentPicker(_:didPickDocumentsAt:) 메서드가 호출됩니다.

데이터 전송

선택된 파일을 다른 앱으로 전송하려면 NSItemProvider를 사용할 수 있습니다. 아래 예제에서는 선택된 파일 URL을 이용하여 데이터를 다른 앱으로 전송합니다.

swift
import MobileCoreServices

func shareFile(url: URL) {
    let itemProvider = NSItemProvider(contentsOf: url)
    let activityViewController = UIActivityViewController(activityItems: [itemProvider], applicationActivities: nil)
    self.present(activityViewController, animated: true, completion: nil)
}

위 코드에서 NSItemProvider를 사용하여 파일의 URL을 제공하고, UIActivityViewController를 통해 데이터를 전송합니다.

결론

Swift에서 UniformTypeIdentifiersUTType을 활용하면 다양한 데이터 타입을 정의하고 파일을 선택해 전송하는 작업이 간편해집니다. 이번 글에서는 UTType을 이해하고 UIDocumentPickerViewControllerNSItemProvider를 이용하여 데이터를 전송하는 방법을 살펴보았습니다. 이를 통해 파일 형식에 따른 데이터를 쉽고 효율적으로 처리할 수 있습니다.