问题标签 [uidocumentbrowservc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1192 浏览

ios - 在 iOS 中导入文件:UIDocumentPicker 与 UIDocumentBrowser

根据文档,UIDocumentPickerViewControllerUIDocumentBrowserViewController都可用于在应用程序沙箱之外导入文档。

对于从本地文档提供商/云位置选择和导入文档,上述哪个最适合。我仍然可以在 iOS 11 中使用 UIDocumentPickerViewController 吗?

根据以下文档Apple 文档选择器文档,在您的应用程序可以使用文档选择器之前,您必须在 Xcode 中打开 iCloud 文档功能,并且应该将 iCloud 容器映射到 appId。如果我只是这样做,这是强制性的导入操作?我尝试使用 UIDocumentPickerViewController ,即使没有上述权利,它似乎也能正确返回选定的文件路径。

0 投票
2 回答
2113 浏览

uikit - QLPreviewController 适用于 UIDocumentBrowserViewController 提供的 URL,但不适用于手动生成的 URL

我正在使用 UIDocumentBrowserViewController 结合 QLPreviewController 来预览用户在 UIDocumentBrowserViewController 中选择的文档,效果很好。使用的pickedDocumentURL变量QLPreviewController填充如下:



但是,当我使用以下方法填充pickedDocumentURL变量时:

或者:

...然后QLPreviewController不起作用(它已显示,但预览为空)并且我在控制台上收到以下错误:


[默认] QLUbiquitousItemFetcher:无法创建沙盒包装器。错误:错误域 = NSPOSIXErrorDomain 代码 = 1“无法为 '/private/var/mobile/Containers/Shared/AppGroup/07524B34-D877-449F-A5C3-89A0431560E5/文件提供程序发出沙盒扩展 com.apple.quicklook.readonly Storage/22207162/1qrbGgy6-u0f69mPqOjjpzlYiUYPR8OG_/Sample.pdf':不允许操作" UserInfo={NSDescription=couldn't issue sandbox extension com.apple.quicklook.readonly for '/private/var/mobile/Containers/Shared/AppGroup/ 07524B34-D877-449F-A5C3-89A0431560E5/文件提供程序存储/22207162/1qrbGgy6-u0f69mPqOjjpzlYiUYPR8OG_/Sample.pdf':不允许操作}#PreviewItem

此外,每种情况下的 URL 绝对字符串完全相同。

0 投票
0 回答
68 浏览

iphone - 使用重命名视图基于文档浏览器的应用程序重命名文档

我不想实现我自己的文档重命名方法,而是使用文档浏览器默认视图,可以通过单击文档浏览器中的文件标题来访问该视图。为此,我相信必须调用此处引用的重命名方法。但是,此方法适用于 NSDocument,不适用于 iPhone。UIDocument 是否有类似的方法或另一种方法可以完全做到这一点?

0 投票
1 回答
156 浏览

swift4 - 无需用户从 DocumentBrowser 中选择即可呈现 iCloud 文件

当我的应用程序首次启动时,我需要加载一个 iCloud 文件。我希望应用程序显示从应用程序关闭时最后打开的文件,因此如果最后打开的文件是 iCloud 文件,这就是我遇到问题的地方。

首先让我声明,如果最后打开的文件在我的文档目录中而不是在 iCloud 中,那么我可以毫无问题地打开它。我不能只存储完整的 url 路径,因为我的应用程序的沙箱目录可以在重新打开应用程序时更改,所以我将最后打开的文件相对于最后打开的文件的文档目录的路径附加到我的 documentDirectory 路径在运行时通过这样做:

然后这个

(如果这是一种不好的做法,请告诉我!)

现在回到主要问题。对于 iCloud 文件,保存 url 是一个问题,但问题不是沙盒目录已更改,而是因为此处提到的内容,我无权访问该 url:如何访问 iCloud Drive 中的文件从我的 iOS 应用程序中?它说

当用户选择应用程序沙箱之外的目的地时,文档选择器会调用委托的 documentPicker:didPickDocumentAtURL: 方法。系统将您的文档副本保存到指定的目的地。文档选择器提供副本的 URL 以指示成功;但是,您的应用无权访问此 URL 引用的文件。

所以我的问题是,如果它是 iCloud 文件,我如何加载最后打开的文件?documentBrowser 可以访问它,但这是因为用户选择了屏幕上的文件,并且出于保护原因我无法在代码中模拟它吗?预先感谢您的任何帮助!

0 投票
1 回答
419 浏览

ios - 使用 UIDocumentBrowserViewController 重命名文档

我正在使用UIDocumentBrowserViewController使用“新方式”存储文档(iOS 11+) 。不需要 iCloud API、权利等——只需工作(在单独的文档浏览器进程的控制下)。

但是,我还没有弄清楚如何以这种方式以编程方式重命名(即移动)文档,至少在 iCloud 中是这样。标准的“url.setResourceValues()”在本地文件系统上工作得很好,但在 513 中呈现/在 iCloud 中不允许。当创建的文档实际上是通过文档浏览器控制时,所有以前的方法(使用全套 iCloud 功能和权利,使用复杂的 FileCoordinator 编排等)也不起作用。

我找不到任何合理的文档或示例,说明如何使用UIDocumentBrowser来移动它(以及我的)控制下的文档。有UIDocumentBrowserImportModeMove模式可以满足我的需要,但是我不知道如何在给定的UIDocument上以编程方式启动它。

有没有人已经有了这样做的经验?

谢谢,习惯

0 投票
1 回答
150 浏览

uidocumentpickervc - 如何使用 UIDocumentPickerViewController 显示沙盒文件?

我正在尝试使用 UIDocumentPickerViewController 显示由我的应用程序创建的文档。这是可能的,还是我需要自己动手?根据我的研究,这似乎无法做到,但这似乎是一个不必要的限制。一个应用程序应该能够比外部拥有的更容易访问他们的文档。

我确实知道 UIDocumentBrowserViewController,但在我的应用程序中,用户在单个“会话”中创建多个文档,这意味着弹出回根浏览器会很不协调。例如,一个文档可能每 10 秒创建一次,但正常使用会每几分钟创建一个文档。我知道 UIDocument 可能不是最好的情况,我也在 Core Data 中构建了我的模型,但是今天早上学习了 iCloud 弃用,似乎 UIDocument 是最好的方法。

所以我猜有3个问题:

  1. UIDocumentPickerViewController 可以显示“应用程序拥有的文件”吗?
  2. UIDocumentBrowserVC 可以在不弹出的情况下创建新文档吗?
  3. 我缺少更好的 API 吗?

谢谢,米奇

0 投票
1 回答
365 浏览

ios - UIDocument、FileWrapper 和第三方文件提供程序

我在我的应用程序中使用文档包(通过 FileWrapper API),并且我正在使用 UIDocumentBrowserViewController 类进行文档管理。文档包基本上代表(文本)文件和文件夹的层次结构。当文档存储在设备或 iCloud 中时,一切正常。但是,当我尝试在远程位置创建文档时,情况就不同了,访问权限由第三方文件提供商提供,例如 Google Drive、Microsoft One Drive 或 Dropbox。每次我尝试在任何这些位置创建文档时,我都会调用 importHandler(fileURL, .move):

  1. Dropbox:失败并出现一般错误消息:“操作无法完成。(DBFileProviderErrorDomain 错误 1。)”;

  2. Google Drive:失败并显示略有不同的消息:“操作无法完成。(com.apple.DocumentManager 错误 1。)”

  3. MS OneDrive:似乎成功了,但在尝试打开新创建的文档时,应用程序会收到一个 OS_dispatch_data 对象,而不是它所期望的 FileWrapper 对象。

我不确定发生了什么。我唯一能想到的是文档包仅在 Apple 文件系统上受支持。

非常感谢任何建议。谢谢你。

0 投票
1 回答
127 浏览

swift - 为什么 NSFileManager 不能与 UIDocumentBrowserViewController 一起使用?

我需要检查目录中的文件是否存在并且可以打开,但我的FileManager.default.fileExists(atPath: <#url_from_uidocumentbrowservc#>)返回错误。我无法获取所选目录中的项目列表,我无法检查我的项目是否存在。

还有一件事,我想知道选定项目的根目录中包含多少项目。例如,我选择项目文件并想检查项目目录中包含多少项,然后像项目依赖项一样使用这些文件。

看起来代码:

PS URL.startAccessingSecurityScopedResource 也不起作用。

0 投票
0 回答
71 浏览

ios - UIDocumentBrowserViewController 的启动屏幕(深色外观)

我使用.UIDocumentBrowserViewController作为我的初始屏幕browserUserInterfaceStyle = .dark

如何构建匹配LaunchScreen.storyboard

我正在尝试遵循 HIG:https ://developer.apple.com/design/human-interface-guidelines/ios/icons-and-images/launch-screen/

我不能直接UIDocumentBrowserViewController在情节提要中使用(会很好!),所以我尝试使用 aUISplitViewController但很难让外观正确。

是否有捷径可寻?如果不是,什么会接近UIDocumentBrowserViewController

0 投票
1 回答
204 浏览

ios - 如何指定用于导入 .obj 文件的文件类型?

我试图让我的应用程序识别.obj文件以进行导入。

我已尝试按照此 WWDC 视频中的说明进行操作。

我尝试指定为导入的 UTI 和导出的 UTI。两者都不会导致文件可在其中打开UIDocumentBrowserViewController(文档图标变灰)。我也不明白我的原生文档格式是如何在浏览器中打开的。我已尝试从设备中删除并重新安装该应用程序。

我错过了什么?为什么这不简单?

这是我所拥有的:

Xcode 文档类型