#iphone #objective-c #ios #icloud #nsfilewrapper
#iPhone #objective-c #iOS #icloud #nsfilewrapper
Вопрос:
Извините, если это очевидно, но я изо всех сил пытаюсь извлечь компоненты из NSFileWrapper, и документы не были особенно поучительными.
У меня есть две оболочки. Один содержит простой текстовый файл. Другой содержит настройки страниц. PageSettings — это NSObject, который содержит несколько NSStrings, BOOLs и т. Д. Это моя оболочка (основанная на руководстве Apple по программированию приложений на основе документов для iOS), и теперь я застрял, пытаясь снова извлечь информацию:
if (self.fileWrapper == nil) {
self.fileWrapper = [[NSFileWrapper alloc] initDirectoryWithFileWrappers:nil];
}
NSDictionary *fileWrappers = [self.fileWrapper fileWrappers];
if (([fileWrappers objectForKey:@"page"] == nil) amp;amp; (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) amp;amp; (self.pageSettings != nil)) {
NSData *settingsData = [NSKeyedArchiver archivedDataWithRootObject:self.pageSettings];
NSFileWrapper *settingsWrapper = [[NSFileWrapper alloc] initRegularFileWithContents:settingsData];
[settingsWrapper setPreferredFilename:@"pageSettings"];
[self.fileWrapper addFileWrapper:settingsWrapper];
}
Итак, мой вопрос в том, как загрузить текстовый файл и настройки страниц обратно в 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];
Комментарии:
1. Большое спасибо за помощь. Теперь все так ясно с образцом кода.