【问题标题】:NSFileWrapper Basics: How to extract componentsNSFileWrapper 基础:如何提取组件
【发布时间】:2011-12-14 11:16:39
【问题描述】:

对不起,如果这很明显,但我正在努力解决如何从 NSFileWrapper 和 docs were not particular enlightening. 中提取组件

我有两个包装。一个持有一个简单的txt文件。另一个持有 pageSettings。 PageSettings 是一个 NSObject,它包含多个 NSString、BOOL 等。这是我的包装器(基于 Apple's Document-Based Application Programming Guide for 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"];

如果有任何解释,我将不胜感激。非常感谢。

【问题讨论】:

    标签: iphone objective-c ios icloud nsfilewrapper


    【解决方案1】:
    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];
    

    【讨论】:

    • 非常感谢您的帮助。现在有了示例代码就很清楚了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-07
    • 2022-11-16
    • 2018-04-02
    相关资源
    最近更新 更多