gpt4 book ai didi

cocoa - 在由各种文件组成的 NSDocument 中使用 NSFileWrapper

转载 作者:行者123 更新时间:2023-12-03 16:05:16 25 4
gpt4 key购买 nike

我正在制作一个基于文档的 Cocoa 应用程序,其中文档是动态文件的集合(用户可以添加或删除文件)。特别是,保存和打开操作应尽可能快

如果我正确理解文档,我应该使用 NSFileWrapper并实现fileWrapperOfType:errorreadFromFileWrapper:ofType:error: 。但是,我找不到完整的代码示例。我应该如何实现以下方法?

#pragma mark - NSDocument

- (NSFileWrapper *)fileWrapperOfType:(NSString *)typeName error:(NSError **)outError {
return nil;
}

- (BOOL)readFromFileWrapper:(NSFileWrapper *)fileWrapper ofType:(NSString *)typeName error:(NSError **)outError {
return YES;
}

#pragma mark - My methods

- (void) addFileToDocumentFromURL:(NSURL*)fileURL {
// Add a file to the document given the file URL
}

- (void) removeFileFromDocumentWithName:(NSString*)name {
// Remove a file from the document given the file name
}

最佳答案

放在一起bitspieces来自文档:

- (NSFileWrapper*) fileWrapperOfType:(NSString *)typeName error:(NSError *__autoreleasing *)outError {
return self.documentFileWrapper;
}

- (BOOL) readFromFileWrapper:(NSFileWrapper *)fileWrapper ofType:(NSString *)typeName error:(NSError *__autoreleasing *)outError {
self.documentFileWrapper = fileWrapper;
return YES;
}

- (void) addFileToDocumentFromURL:(NSURL*)fileURL {
NSData* fileData = [NSData dataWithContentsOfURL:fileURL];
NSFileWrapper *fileWrapper = [[NSFileWrapper alloc] initRegularFileWithContents:fileData];
fileWrapper.preferredFilename = [fileURL lastPathComponent];
[self.documentFileWrapper addFileWrapper:fileWrapper];
[self updateChangeCount:NSChangeDone];
}

- (void) removeFileFromDocumentWithName:(NSString*)name {
NSFileWrapper *fileWrapper = [self.documentFileWrapper.fileWrappers objectForKey:name];
if (fileWrapper) {
[self.documentFileWrapper removeFileWrapper:fileWrapper];
[self updateChangeCount:NSChangeDone];
}
}

- (NSFileWrapper*) documentFileWrapper {
if (!_documentFileWrapper) { // New document
_documentFileWrapper = [[NSFileWrapper alloc] initDirectoryWithFileWrappers:nil];
}
return _documentFileWrapper;
}

关于cocoa - 在由各种文件组成的 NSDocument 中使用 NSFileWrapper,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12130632/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com