问题标签 [uidocument]

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 投票
3 回答
2043 浏览

ios - 检测跨设备删除iCloud中文档的正确方法?

我找不到一种明显的方法来检测我正在监视的文档的删除(我缓存了我的应用程序关心的文档列表)。

在 Device1 上:当我删除一个文档时,我调用

这在 Device1 上运行良好,一切都保持同步。在 Device2 上:我试图依靠NSMetadataQuery通知:

初始文件列表在NSMetadataQueryDidFinishGatheringNotification 文档添加/更改中正常通过NSMetadataQueryDidUpdateNotification

当我删除 Device1 上的文件时,我得到一个奇怪的结果:NSMetadataQueryDidUpdateNotification列出了我的所有文档(除了已删除的文档)的更新我不确定我应该如何检测丢失的文件已被删除或更新通知就是为了这个目的

问题1:我应该检查什么?

我尝试了另一条路线,即注册为NSFilePresenteriCloud URL:

现在,NSFilePresenter当该 URL 中的文件发生更改时,我会通过协议进行调用,但是由于回调是模糊的,因此运行逻辑以确定丢失的文档是非常缓慢的。我得到的唯一电话是我希望通过 但从未调用过此方法- (void)presentedItemDidChange; 来获得回调。- (void)accommodatePresentedSubitemDeletionAtURL:(NSURL *)url completionHandler:(void (^)(NSError *errorOrNil))completionHandler

问题2:知道如何让它工作吗?

0 投票
1 回答
665 浏览

objective-c - UIDocument saveToURL:导致严重滞后

UIDocumentsaveToURL:forSaveOperation:completionHandler:假设是异步的(在文档中,它说它在后台队列上执行此操作),但我的代码在调用它时有 7-10 秒的延迟。

这是代码:

和控制台:

为什么异步调用会有这么大的延迟?谢谢

0 投票
1 回答
1003 浏览

objective-c - UIDocument openWithCompletionHandler 成功返回 NO

我有这个代码:

为什么这会返回NO?对我来说,即使在我的

方法,我总是返回YES。

谢谢

0 投票
0 回答
929 浏览

iphone - openWithCompletionHandler 没有在我的设备上返回

当我尝试从 iCloud 打开使用另一台设备创建的 UIDocument 时,我遇到了奇怪的行为。当我调用openWithCompletionHandler时,它永远不会完成。

这是我重现该行为的方式:

  1. 我在 iPad 上创建了一个新的 UIDocument 并将其存储在 iCloud 中
  2. 然后我删除了同一个应用程序,但从 iPhone
  3. 我在 iPhone 上从 XCode 运行应用程序
  4. 到目前为止,iPhone 是干净的,因为该应用程序已被删除
  5. 当应用程序第一次在 iPhone 上运行时,它调用了 openWithCompletionHandler方法,该方法挂起并且没有任何反应。在openWithCompletionHandler操作结束后,它没有到达要执行的代码块。

它仅在我创建一个新的 UIDocument 并将其从 iPhone 存储在 iCloud 中时才有效。然后,如果我执行相同的步骤(1-5),但在 iPad 上我会遇到类似的行为。

这是我拥有的源代码:

有没有人遇到过类似的问题?

我也尝试使用下面的方法手动下载文件,但仍然是相同的行为......

非常感谢!

0 投票
1 回答
309 浏览

ios - 在加载视图之前从 iCloud 加载文档

我在 iCloud 上有图像,我为它们子类化了 UIDocument。现在我想在加载 ViewController 后在 UITableView 上显示图像。所以我在viewDidLoad方法中添加了这段代码

在这里,我将所有图像一张一张地收集到NSMutableArray *arrayOfImages,然后在- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath方法中使用该数组。但是它们没有显示在表格中,因为它们正在另一个线程中下载。如何解决这个问题并仅在下载图像或设置默认图像后才开始显示 UITableView?

0 投票
1 回答
817 浏览

icloud - 如何让 NSMetadataQuery 将我保存的文档的文件夹视为包?

我正在编写一个应用程序,它可以在本地和 iCloud 上保存和加载文档。本地工作正常,但我遇到了 iCloud 问题。

文档保存为一个包 - UIDocument 读取和写入一个包含图像文件、缩略图文件和信息 plist 的 NSFileWrapper。当我将文档保存到 iCloud,然后查看“管理存储”下的文件时,我看到的是单个文件而不是包;更重要的是,当我使用 NSMetadataQuery 搜索文件时,它会为每个单独的文件而不是包返回一个 NSMetadataItem。结果,我的应用程序没有意识到要加载任何包,而且 iCloud 毫无用处。

认为如果我设置了文档类型并正确导出了 UTI,那么这些包就会得到正确处理。对吗?如果是这样,将文档类型设置为包的清单是什么?我有:

  • 添加了文档类型
  • 将 LSTypeIsPackage 设置为 YES(我尝试过字符串 YES 和 bool YES)
  • 将 CFBundleTypeExtensions 设置为包含一个字符串的数组:文件后缀
  • 将 LSHandlerRank 设置为所有者
  • 导出具有相同标识符的 UTI
  • 将其设置为符合 com.apple.package
  • 添加了一个 UITypeTagSpecification 字典,其中包含一个数组,用于键 public.filename-extension,其中包含一个字符串:文件后缀

我还尝试添加一个匹配的 Imported UTI 来匹配导出的 UTI,但没有运气。

我错过了什么?

更新:我注意到这个问题中的 OP看到了我想要的行为(即使他不想要它),所以它必须是可能的。

0 投票
2 回答
628 浏览

ios - 用于 iCloud 的大量 UIDocuments

我有一个带有 iCloud 同步的项目,但它根本无法正常工作。首先,我得到一组更改的对象,然后将它们转换为 CSV 字符串(这将是云中 UIDocuments 的内容),然后将它们上传到 iCLoud。如果我有少于 400 个对象,一切都很好,但如果我有更多 - 应用程序挂起。

我尝试使用本地自动释放池,我已将大数组拆分为较小的数组。但这没有帮助。

将大量 UIDocuments 上传到 iCloud 的最佳方式是什么?我的上传方法:

在此先感谢并为我的英语感到抱歉。

0 投票
1 回答
2804 浏览

iphone - UIDocument、NSFileWrapper 和图像

我有一个 UIDocument,我希望它由(1)一个 txt 文件和(2)几个 jpg 图像组成。我将 txt 和所有 jpg 文件放入 NSFileWrapper。

当我加载 UIDocument 时,我很快就需要 txt 文件中的信息,所以我先加载它并忽略所有图像,直到我真正需要它们。

虽然我知道如何延迟加载图像,但我不确定如何“延迟”保存图像(尤其是在使用 iCloud 时,我不希望文件被不必要地上传/下载)。假设我已经加载了所有图像并且没有更改它们。然后我想保存 UIDocument,忽略所有图像(因为它们没有改变),但想保存文本,因为它确实改变了。

我将如何实现这一目标?甚至可能吗?还是自动完成?或者我是否应该不将图像放在我的 UIDocument 中,让每个图像由不同的 UIDocument 处理?恐怕这对我来说有点混乱。

到目前为止,这是我的代码,它将保存所有图像和文本(无论它们是否被更改):


UIDocument


当我想保存 UIDocument 时:

0 投票
1 回答
444 浏览

iphone - 继承 UIDocument 的 initWithFileURL

我正在尝试覆盖 UIDocument 的 initWithFileURL,因为一旦 UIDocument 被初始化,我需要调用一些自定义方法。

我认为这可能是一个好主意:

如果我覆盖它,我还需要做些什么吗?我觉得我需要检查 NIL 什么的。如果您需要使用自定义内容覆盖方法,您通常会在哪里查看?我只能(通过右键单击 UIDocument 时跳转到定义)看到这个:

0 投票
1 回答
417 浏览

core-data - 当应用程序的后备存储既是文件数据库又是核心数据数据库时,UIDocument 或 UIManagedDocument

我对应该从哪个类继承有点困惑。我的应用程序当前在“文档”文件夹中创建文件,并且还具有基于核心数据的数据模型。这些数据模型包含有关文件的更多信息。

现在我正在考虑将应用程序迁移到文档架构,从而一次与 iCloud 集成。

我已经开始考虑使用两者的方向,即使UIDocument用来管理文件和UIManagedDocument管理核心数据。

如果有人可以指导我,将不胜感激。