我有一个 UIDocument,我希望它由(1)一个 txt 文件和(2)几个 jpg 图像组成。我将 txt 和所有 jpg 文件放入 NSFileWrapper。
当我加载 UIDocument 时,我很快就需要 txt 文件中的信息,所以我先加载它并忽略所有图像,直到我真正需要它们。
虽然我知道如何延迟加载图像,但我不确定如何“延迟”保存图像(尤其是在使用 iCloud 时,我不希望文件被不必要地上传/下载)。假设我已经加载了所有图像并且没有更改它们。然后我想保存 UIDocument,忽略所有图像(因为它们没有改变),但想保存文本,因为它确实改变了。
我将如何实现这一目标?甚至可能吗?还是自动完成?或者我是否应该不将图像放在我的 UIDocument 中,让每个图像由不同的 UIDocument 处理?恐怕这对我来说有点混乱。
到目前为止,这是我的代码,它将保存所有图像和文本(无论它们是否被更改):
UIDocument
-(id)contentsForType:(NSString *)typeName error:(NSError *__autoreleasing *)outError {
NSMutableDictionary *wrappers = [NSMutableDictionary dictionary];
// the following puts a wrapper into a dictionary of wrappers:
[self encodeObject:self.text toWrappers:wrappers toFileName:@"text.data"];
[self encodeObject:self.photos toWrappers:wrappers toFileName:@"photos.data"];
NSFileWrapper *fileWrapper = [[NSFileWrapper alloc] initDirectoryWithFileWrappers:wrappers];
return fileWrapper;
}
当我想保存 UIDocument 时:
[self.doc saveToURL:self.doc.fileURL forSaveOperation:UIDocumentSaveForOverwriting completionHandler:^(BOOL success) {
[self.doc closeWithCompletionHandler:^(BOOL success) {}];
}];