4

抱歉,如果这很明显,但我正在努力解决如何从 NSFileWrapper 中提取组件,并且文档并不是特别有启发性。

我有两个包装纸。一个持有一个简单的txt文件。另一个持有 pageSettings。PageSettings 是一个 NSObject,它包含几个 NSString、BOOL 等。这是我的包装器(基于Apple 的 iOS 的基于文档的应用程序编程指南),我现在正试图再次提取信息:

    if (self.fileWrapper == nil) {
    self.fileWrapper = [[NSFileWrapper alloc] initDirectoryWithFileWrappers:nil];
}

NSDictionary *fileWrappers = [self.fileWrapper fileWrappers];

if (([fileWrappers objectForKey:@"page"] == nil) && (self.text != nil)) {
    NSData *textData = [self.text dataUsingEncoding:NSUTF8StringEncoding];
    NSFileWrapper *textFileWrapper = [[NSFileWrapper alloc] initRegularFileWithContents:textData];
    [textFileWrapper setPreferredFilename:@"page"];
    [self.fileWrapper addFileWrapper:textFileWrapper];
}

if (([fileWrappers objectForKey:@"pageSettings"] == nil) && (self.pageSettings != nil)) {
    NSData *settingsData = [NSKeyedArchiver archivedDataWithRootObject:self.pageSettings];
    NSFileWrapper *settingsWrapper = [[NSFileWrapper alloc] initRegularFileWithContents:settingsData];
    [settingsWrapper setPreferredFilename:@"pageSettings"];
    [self.fileWrapper addFileWrapper:settingsWrapper];
}

所以我的问题是如何将 txt 文件和 pageSettings 加载回 self.text 和 self.pageSettings?

我用- (NSData *)serializedRepresentation吗?如果是这样,怎么做?还是我像这样简单地反转它:

NSDictionary *fileWrappers = [self.fileWrapper fileWrappers];
self.text = [fileWrappers objectForKey:@"page"];
self.pageSettings = [fileWrappers objectForKey:@"pageSettings"];

我将非常感谢任何解释。非常感谢。

4

1 回答 1

6
NSDictionary *fileWrappers = [self.fileWrapper fileWrappers];

NSFileWrapper *pageWrapper = [fileWrappers objectForKey:@"page"];
NSData *pageData = pageWrapper.regularFileContents;
self.text = [[NSString alloc] initWithData:pageData encoding:NSUTF8StringEncoding];

NSFileWrapper *pageSettingsWrapper = [fileWrappers objectForKey:@"pageSettings"];
NSData *pageSettingsData = pageSettingsData.regularFileContents;
self.pageSettings = [NSKeyedUnarchiver unarchiveObjectWithData:pageSettingsData];
于 2011-10-24T22:16:18.303 回答