- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我目前正在使用 UIDocument
子类将我现有的应用程序从 CoreData 存储重新设计为基于文档的应用程序。这主要是为了能够引入 iCloud 同步,因为 CoreData 中的 iCloud 同步一直存在问题。
在某些地方,我可以轻松地用相应的 UIDocument
处理替换 CoreData 的使用,但是在某些地方,我真的很难用异步代码替换同步代码。主要是当我需要即时打开一些文档时,仅用于快速访问,例如在计算过程中。
我已经实现了,例如调度组,等待 UIDocument
操作,但在某些地方这似乎不合适。例如。当需要依次打开大量文档来完成计算时,这将导致非常复杂和怪异的 block 和调度组链接。
为了更好地理解这个问题,让我粗略描述一下我的应用程序使用的文档之王:
所以基本上,对于 1 个用户和 2 年的应用程序使用,可能有大约 50 个文档需要按需显示,并用于计算。
用户文档将始终打开并加载到内存中,我在这里看不到问题。对于其他文档,它不是那么容易,因为我需要动态加载它们,也可能来自其他当前不活动的用户的文档(这消除了在内存中加载当前用户的所有文档的可能性)。
那么,我的主要问题是,处理大量文档的好方法是什么?
我敢打赌,将所有文档加载到内存中是个坏主意,对于 iCloud 同步也是如此。
是否有任何同步 API,或为 UIDocument
强制同步/同步 API 包装器的示例?
最佳答案
您可以通过强制当前线程等待某个条件来同步打开多个文档:
- (void)openDocumentsSynchronously:(NSArray *)documents
{
__block NSUInteger waitingOnDocuments = documents.count;
NSCondition *condition = [NSCondition new];
for (UIDocument *document in documents)
{
[document openWithCompletionHandler:^(BOOL success) {
waitingOnDocuments--;
[condition lock];
[condition broadcast];
[condition unlock];
}];
}
while (waitingOnDocuments > 0)
{
[condition lock];
[condition wait];
[condition unlock];
}
}
不过,我不建议在主线程上执行此操作,因为文档可能需要一些时间才能打开。
关于ios - 同步打开 UIDocument,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23151526/
我尝试通过以下方式打开文档文件,但没有任何反应。我也尝试过其他方法,但它对我不起作用。打开文档文件(doc、docx、pdf、ppt 等)的正确方法是什么。我在 UIWebView() 的某处读到这也
我正在尝试打开多个 UIDocument循环中的实例,使用 - (void)openWithCompletionHandler:(void (^)(BOOL success))completionHa
我目前正在使用 UIDocument 子类将我现有的应用程序从 CoreData 存储重新设计为基于文档的应用程序。这主要是为了能够引入 iCloud 同步,因为 CoreData 中的 iCloud
无论我怎么尝试,这都行不通... 我正在尝试使用 UIDocument 在本地保存我的(文本)文件。当我创建一个文件(即它没有加载)时,它保存得很好。 但是,如果我通过打开文件加载我的文件然后保存它,
我正在处理云中的文档... * 将文档添加到云端 * 从云端删除该文件 * 不知何故,该文件在几秒钟后重新出现。 以下是详细信息: 我像这样创建了一个 UIDocument 实例 NSURL
我有一个带有 UIDocument 的基于文档的 iOS 应用程序子类。我需要能够在文件系统上移动它代表的文件。我考虑过用 NSFileManager 移动它, 但这会弄乱 UIDocument的fi
我有一个 UIDocument,我希望它由 (1) 一个 txt 文件和 (2) 几个 jpg 图像组成。我将 txt 和所有 jpg 放入 NSFileWrapper 中。 当我加载 UIDocum
我正在尝试遵循本教程... https://www.raywenderlich.com/131668/document-provider-tutorial 我已经到了这一部分... 但是我无法弄清楚在
我设置 UIDocument 以将我的文件保存到设备。我用 标记一个文件需要保存 [ myDoc updateChangeCount:UIDocumentChangeDone ] 现在看来,保存操作只
这可能是一个幼稚的问题 - 但我想仔细检查以避免在 UIDocument 上浪费时间,如果它不符合我的要求的话。 背景:我有一个应用程序,我为其创建了一个简单的文件系统来将用户创建的文档保存为 pli
我使用过 UIDocument,但我不明白与使用 Archiving 相比有何优势?假设您不想使用 iCloud。 最佳答案 来自 Apple 的文档:http://developer.apple.c
我正在使用 Xcode。 在我的应用程序中,我在那个位置保存了一些 UIdocuments [[NSFileManager defaultManager] URLsForDirectory:NSDoc
我一直在尝试向 UIDocument 应用程序的图标添加缩略图。我给出的例子相对简单。通过重写 UIDocument 类中的 fileAttributesToWrite 函数,将图像分配给 thumb
Apple 的 iOS 基于文档的应用程序编程指南显示了构建 FileRepresentation 对象列表以显示文档索引的示例代码。最初没有创建 UIDocument 的实例。然后,当打开文档时,将
创建了UIDocument(XDocument)的子类,由于数据量大,需要一些时间来保存文档。 因此,当我使用 closewithcompletionhandler 关闭 XDocument 实例时,
我在 Swift 中使用 DocumentBrowserViewController 将文档呈现给 ViewController。在 ViewController 中,我有一个 tableView 来
我在我的应用程序中使用文档包(通过 FileWrapper API)并且我使用 UIDocumentBrowserViewController 类进行文档管理。文档包基本上表示(文本)文件和文件夹的层
我有一个基于文档的 iOS 应用程序,当它第一次打开文档时,主视图 Controller 调用 UIDocument.open。 document.open { success in if s
当一个 UIDocument 被关闭时,它还能再次关闭吗?即使它的 documentState 在重新打开后是 UIDocumentStateNormal? 请帮帮我。非常感谢! [document
当我尝试通过 iCloud 同步/共享的文件本质上是一个 NSDictionary 时,我试图弄清楚 UIDocument 子类到底应该是什么样子。 字典文件(plist)有一堆键是主键。每个键都可以
我是一名优秀的程序员,十分优秀!