我是一个 macOS Cocoa 应用程序,我需要以我的应用程序专有格式保存一个 Bundle。出于这个原因,我决定查看 NSFileWrapper ,它似乎是处理该问题的最干净的解决方案。我的代码如下所示:
NSFileWrapper *bundleFileWrapper = [[NSFileWrapper alloc] initDirectoryWithFileWrappers:nil];
NSDictionary *fileWrappers = [bundleFileWrapper fileWrappers];
if ([fileWrappers objectForKey:mboxFileName] == nil) {
NSFileWrapper *textFileWrapper = [[NSFileWrapper alloc] initRegularFileWithContents:mboxData];
[textFileWrapper setPreferredFilename:mboxFileName];
[bundleFileWrapper addFileWrapper:textFileWrapper];
}
NSError *error;
BOOL success = [bundleFileWrapper writeToURL:[NSURL fileURLWithPath:path] options:NSFileWrapperWritingAtomic originalContentsURL:NULL error:&error];
NSLog(@"Error = %@",[error localizedDescription]);
我的问题是我最终使用了非常大的 NSData 对象,这种方法需要大量内存。有没有办法使用 NSFileWrapper 按顺序编写小的 NSData 对象?任何帮助是极大的赞赏。