Основы NSFileWrapper: Как извлечь компоненты

Извините, если это очевидно, но я борюсь с тем, как извлечь компоненты из NSFileWrapper, и документы не были особенно полезными .

У меня есть две обертки. Один содержит простой текстовый файл. Другой содержит настройки страницы. PageSettings - это объект NSObject, который содержит несколько строк NSSt, 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"];

Буду очень признателен за любые объяснения. Спасибо.

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];
Другие вопросы по тегам