У меня есть приложение Swift, в котором реализовано UIDocumentPicker
для открытия .json
файлов из iCloud Drive или локальной файловой системы пользователя. На данный момент, после выбора файла в контроллере представления DocumentPicker, URL-адрес файла печатается на консоли:
import Foundation
import SwiftUI
public struct DocumentPicker : UIViewControllerRepresentable {
public func makeCoordinator() -> Coordinator {
return DocumentPicker.Coordinator(parent1: self)
}
public func makeUIViewController(context: UIViewControllerRepresentableContext<DocumentPicker>) ->
DocumentPicker.UIViewControllerType {
let picker = UIDocumentPickerViewController(documentTypes: [String("public.json")], in: .import)
picker.allowsMultipleSelection = false
picker.delegate = context.coordinator
return picker
}
public func updateUIViewController(_ uiViewController: UIDocumentPickerViewController, context:
UIViewControllerRepresentableContext<DocumentPicker>) {
// ...
}
public class Coordinator : NSObject,UIDocumentPickerDelegate {
var parent : DocumentPicker
init(parent1 : DocumentPicker) {
parent = parent1
}
public func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) {
print(urls)
}
}
}
На данный момент массив (только с 1 URL-адресом .allowsMultipleSelection
временно установлено значение false) выводится на консоль, например:
[file:///private/var/mobile/Containers/Data/Application/5A23352A-E0A3-4169-BBEF-CBA64A695A61/tmp/com.company.App-Inbox/someFile.json]
Я провел довольно много исследований и могу найти множество руководств о том, как анализировать данные с удаленных серверов HTTP / S, которые отправляют ответ application/json
, а также множество сведений о том, как читать из файла JSON, связанного с приложением в Xcode, но ни один из них не работает для чтения и анализа данных из файла, открытого с помощью UIDocumentPicker. Скудна даже документация о том, как использовать файлы, выбранные в UIDocumentPicker после их «открытия». Я новичок в Swift, поэтому буду благодарен за любой совет!