2012-11-09 60 views
0

我是Xcode的新手,我真的需要帮助。iOS - 如何使用存档保存和读取文件?

我正尝试使用归档来保存文件的项目数组并尝试读取并将它们放在表视图中。

问题是,当我关闭应用程序并再次启动它时,当我将数据保存到文件中时,它会覆盖现有文件,并且所有存储的数据都会消失。

我用这个方法把数据存储在文件中:

-(id)init 
{ 

    if(self = [super init]) 
    { 
     _appSupportPath = [NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES)lastObject]; 

     if (!_appSupportPath) 
      return nil; 

     _repositoryPath = [_appSupportPath stringByAppendingPathComponent:FILE_NAME]; 

     if (_data == nil) 
      _data = [[NSMutableDictionary alloc] init]; 
    } 
    return self; 
} 

-(void)saveToFile 
{ 

    dispatch_queue_t writeQueue = dispatch_queue_create("MyApp:file:write", NULL); 

    NSMutableDictionary *localData = [NSMutableDictionary dictionaryWithDictionary:_data]; 

    dispatch_async(writeQueue, ^{ 
     NSFileManager *fileManager = [NSFileManager defaultManager]; 
     if(![fileManager fileExistsAtPath:_appSupportPath]) 
      [fileManager createDirectoryAtPath:_appSupportPath withIntermediateDirectories:YES attributes:nil error:NULL]; 
     [NSKeyedArchiver archiveRootObject:localData toFile:_repositoryPath]; 
    }); 

} 

任何帮助吗?

请让我知道是否有更好/更简单的方式来存储我不知道的文件。

在此先感谢

回答

0

您正确保存该文件。 在启动时读取它:

_data = [[NSKeyedUnarchiver unarchiveObjectWithFile:_repositoryPath] retain]; 

if (_data == nil) 
    _data = [[NSMutableDictionary alloc] init]; 
+0

哦,我错过了那一行,它刚刚开箱即用! 谢谢你的男人! – Joaocdn