2011-10-24 14 views
4

很抱歉,如果這是顯而易見的,但我與如何從NSFileWrapper提取成分和docs were not particular enlightening.NSFileWrapper基礎知識:如何提取成分

我有兩個包裝掙扎。一個擁有一個簡單的txt文件。另一個持有pageSettings。 PageSettings是一個NSObject持有幾個NSString的,布爾值將等,這是我的包裝(基於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"]; 

我會非常感謝任何解釋。非常感謝。

回答

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]; 
+0

非常感謝您的幫助。現在使用示例代碼很清楚。 –