Simulator behaves differently than real iOS device when loading a file

1 week ago 13
ARTICLE AD BOX

My first iOS app and a weird thing – at least for me in Xcode 26.3. It is an app, which loads a JSON file via document picker and fills some model data. It works fine on any simulator. But it doesn't on my real iPhone. The code is:

Button("Chose file") { showDocumentPicker = true }.sheet(isPresented: $showDocumentPicker) { DocumentPickerViewController(url: $importedFileURL) } ... if let url = importedFileURL { Button("Import File", systemImage: "square.and.arrow.down", action: { Task { do { try await parseJSON(jsonURL: url) } catch { // Some error handling... } } }) } ... private func parseJSON(jsonURL: URL) async throws { var jsonData: Data print("File: ", jsonURL) do { jsonData = try Data(contentsOf: jsonURL) } catch { throw jsonError.parsingError // <--- Gets thrown!!! } // Some more parsing... }

The Picker wrapper code is:

// iOS document picker wrapper for SwiftUI struct DocumentPickerViewController: UIViewControllerRepresentable { @Binding var url: URL? func makeUIViewController(context: Context) -> UIDocumentPickerViewController { let picker = UIDocumentPickerViewController(forOpeningContentTypes: [.item]) picker.delegate = context.coordinator return picker } func updateUIViewController(_ uiViewController: UIDocumentPickerViewController, context: Context) {} func makeCoordinator() -> Coordinator { Coordinator(self) } class Coordinator: NSObject, UIDocumentPickerDelegate { let parent: DocumentPickerViewController init(_ parent: DocumentPickerViewController) { self.parent = parent } func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) { guard let url = urls.first else { return } parent.url = url } func documentPickerWasCancelled(_ controller: UIDocumentPickerViewController) { // Handle cancellation if needed } } }

It throws the jsonError.parsingError. Via the print command the file is shown as:

file:///private/var/mobile/Containers/Shared/AppGroup/13B5845C-1122-4CA6-BE46-02C7B7DB7F86/File%20Provider%20Storage/Backup.json

Why? Is this a bug or did I miss a feature? Is it something related to sandboxing?

Read Entire Article