4

これが明らかな場合は申し訳ありませんが、NSFileWrapperからコンポーネントを抽出する方法に苦労しており、ドキュメントは特に啓発的ではありませんでした。

私は2つのラッパーを持っています。1つは単純なtxtファイルを保持します。もう1つはpageSettingsを保持します。PageSettingsは、いくつかのNSString、BOOLなどを保持するNSObjectです。これは私のラッパー(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 に答える