问题标签 [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.
objective-c - 使用 UIDocument saveToUrl 在 NSURL 上抛出 NSInvalidArgumentException
我正在尝试进行快速测试以将文件同步到 iCloud。这是我的简单片段:
现在我试着环顾四周,在其他教程中,这似乎是他们这样做的方式。问题是当代码运行时,会抛出这个异常(在 [doc saveToURL] 行):
'NSInvalidArgumentException',原因:' * -[NSURL URLByAppendingPathExtension:]:组件、组件或 pathExtension 不能为 nil。
在此处获取普遍存在的 URL 后,将立即调用运行此逻辑的方法:
我尝试了一些不同的方法来修复它,但它一直在发生。知道问题可能是什么吗?
谢谢大家的时间:)
c# - 如何将按钮添加到 UIDocumentInteractionController 预览
我UIDocumentInteractionController
用于文件预览:
如何在视图顶部添加自定义按钮以执行某些操作?
objective-c - 我们可以确定 iCloud 文件包中发生了什么变化吗?
我正在尝试使用支持 iCloud 的 UIDocument 和基于目录的 NSFileWrapper(又名文件包)来维护复杂的应用程序状态。在我的应用程序中,用户可以有许多不同的配置(有点像为每个潜在驾驶员提供座位设置的汽车)。
对于每个单独的状态,我将一个常规文件 NSFileWrapper 添加到整个文件包中。
将我的 UIDocument 写入/读取云的工作正常。当文件包更改时,我也会收到通知。
问题是我无法从通知中找出子文件(即状态)的哪些添加或更改导致包更改。
我已经尝试在我的自定义 UIDocument 中覆盖presentedSubitemDidChangeAtURL,但这只会给我包的URL。我还尝试了文件包装器的 matchesContentsOfURL 方法,但这似乎不正确,因为子文件包装器没有“真实”URL。
欢迎提出意见和建议。
objective-c - UIManagedDocument 文件修改日期没有改变
使用正确的保存 API 方法打开、关闭、更改数据和保存文档UIDocument
不会更改从fileModificationDate
属性返回的值。
从文档:
修改日期由
openWithCompletionHandler:
、saveToURL:forSaveOperation:completionHandler:
和revertToContentsOfURL:completionHandler:
方法更新。
但fileModificationDate
始终报告文档文件包装器的创建日期,无论核心数据存储是否被更新。
这当然不是正常行为,对吧?
没有特定的额外代码。简单地说,这是 UIManagedDocument 的子类。UIManagedDocument 自动管理文档包装器内的核心数据存储。代码就这么简单:
将始终返回文档的创建日期。创建日期和修改日期都是相同的,即第一次保存文档以进行创建的日期。但是,内容存储文件的修改日期发生了变化,创建日期与文档包装器相同。
ios - UIDocument 打开永远不会完成
我有一个 iOS 5.1 应用程序,我正在尝试针对 iOS 6 对其进行优化。问题是它openWithCompletionHandler:
永远不会完成。如我所见,第二台设备无法下载此文件。但是设备所有者可以正常使用文件。
我的应用程序使用 2 种文件类型:第一种是纯文本数据,第二种是带有图片数据的文本。文本文件的一切都非常酷。我想问题出在文件大小上,但延迟(我尝试了 40 秒)对我没有帮助。
我尝试使用dataWithContentsOfFile:
而不是 UIDocument,结果是
数据:(空)WithError:错误域=NSCocoaErrorDomain代码=256“操作无法完成。(可可错误256。)”
我正在使用以下代码打开文档
我在打开之前添加了以下内容,但它没有效果:
ios - 5.1 sim 中的 openWithCompletionHandler 概率
我很困惑。我发现 UIDocument 方法 openWithCompletionHandler 适用于 iOS 5 和 IOS 6 模拟程序,但不适用于 iOS 5.1。
关于我如何解决这个问题的任何想法?这只是模拟失败但真实环境没有的事情之一吗?
谢谢。
史蒂夫
ios - NSFileWrapper 是否将所有内容加载到内存中?
假设我有一个NSFileWrapper
目录。该目录由多级目录和文件组成。有些文件很大。所有这些文件都加载到内存中,还是延迟加载?
如果它们被加载到内存中,是否有NSFileWrapper
类似功能的替代方法不会将文件加载到内存中?我可以挂钩的东西UIDocument
?
这适用于基于文档的应用程序,它使用UIDocument
与 iCloud 同步的 's。文档中可以嵌入图像和视频。每个图像/视频都有一个预览图像(缩略图),显示在 HTML 文档中。不应将完整尺寸的图像或视频加载到内存中,而应按需加载。
我还需要一种方法来添加资源而不将其加载到内存中。像“initWithAsset:(ALAsset *)”这样的东西是理想的。
ios - openWithCompletionHandler 从不调用 iPhone5 中的完成块
最近我遇到了一个奇怪的问题,如果有人遇到过同样的问题,我会很感兴趣。我正在开发一个支持 iCloud 的应用程序,它使用
- (void)openWithCompletionHandler:(void (^)(BOOL 成功))completionHandler
对于存储在 iCloud 中的某些文件。
我正在使用 XCode 4.5.2 (4G2008a) 并且我有几台设备,每台都运行 iOS 6.0.1:一部 iPhone 3GS、4GS、5、几部 iPad 和 2 部 iPod Touch,第 4 代和第 5 代。此外,我正在使用一些也处理 iCloud 数据的 MAC - 但是,它们使用不同的方案来访问文件。
现在的问题:除了在 iPhone 5 上,该应用程序在所有其他设备上都可以完美运行 - 调用完成处理程序并且正确加载和打开文档,无论其他什么设备同时运行该应用程序。
然而,在 iPhone 5 上,完成块和 loadFromContents:: 都不会被调用,并且应用程序只是挂起,因为如果 iCloud 将它报告为存在的普遍存在的项目,它取决于此文件。
由于相同的应用程序在所有其他设备上运行,我认为不应该有任何编码或逻辑错误,但 iPhone 5 iOS 实现中存在一些差异。有没有人有类似的经历,或者有解决方法的想法?
iphone - 为什么在我的 UIDocument 自动保存后调用 loadFromContents?
我有一个 iOS 应用程序,它实现了 UIDocument 的自定义子类,该子类将文件包装器封装在数据包、存档对象和图像上。我最初将实现转换为 UIDocument 以获得 iCloud 支持,但它太不可靠了,所以我拔出了 iCloud 部分,只使用带有本地存储的 UIDocument。
当用户修改数据时,我将 updateChangeCount: 发送到 UIDocument 实例,它会定期在后台自动保存。我只在应用程序进入后台时关闭文档。我发现在调用 UIDocument 的 contentsForType 方法的自动保存之后,还会调用 loadFromContents。我在逻辑上不理解这一点,它也导致我的界面出现问题。
我认为 loadFromContents 只有在打开文档或在另一台设备上修改了 iCloud 文档时才会被调用。因此,当我的文档在后台自动保存时,它也会重新加载,这会导致 UI 更新,这有时会丢弃尚未保存的正在进行的新工作。我可以忽略 UI 中的重新加载,但我的模型数据与 UI 对象不同仍然存在一些问题。
那么我做错了什么导致这种行为?我希望保存而不是启动 loadFromContents 或了解如何处理该行为。
谢谢!
ios - UIDocument loadFromContents 失败并出现 EXC_BAD_ACCESS
我有一个使用 iCloud 文档存储的非常简单的 IOS 应用程序。一切正常,然后在某个时候,我开始在我的文档加载方法中遇到至少一个 iCloud 文档的 EXC_BAD_ACCESS 错误,尽管大多数文件加载得很好。
我希望我可以“捕获”并处理不良数据并忽略损坏的文件;但我似乎无法弄清楚如何。EXC_BAD_ACCESS 错误会导致应用程序崩溃。
我应该做些什么来提前确定数据或文件将失败并跳过它(或删除它)。