目标C iPhone开发、保存和检索NSMutableArray



我是iPhone开发的新手,正在使用XCode 4.2我正在尝试保存一个NSMutable数组,这样当我关闭应用程序并重新打开它时,数据仍然存在我使用这两个功能:

-(void)saveData{
    [NSKeyedArchiver archiveRootObject:[data copy] toFile:[self dataFilePath]];
}
- (void)loadData
{
    data = [NSKeyedUnarchiver unarchiveObjectWithFile:self.dataFilePath];
}

但我发现了两个主要问题:1-当我切换视图并返回时,数据不见了2-当我完全退出应用程序时(即,我双击主按钮并将其从正在运行的应用程序列表中删除(,数据也不会被删除

我发现我可以使用这两个NSMutableArray方法:writeToFileinitWithContentsOfFile,但我不知道在哪里调用它们(是在viewDidLoad?中向UITableView?添加项目时吗

有人能给我一个代码样本吗?

提前感谢

要保存数组,请使用writeToFile:atomically:方法。它会将您的NSArray内容保存为plist文件。要从plist文件加载数组,请使用initWithContentsOfFile:方法。

请注意,只有当您的数组具有以下类实例NSStringNSDataNSDateNSNumberNSArrayNSDictionary作为项时,这些方法才能保存您的内容。

您可以调用保存/加载方法,如以下

// in view controller implementation
- (void) saveData {
  [self.theArray writeToFile: self.filePath automatically:NO];
}
- (void) loadData {
  self.theArray = [NSArray arrayWithContentsOfFile: self.filePath];
}
- (void) viewDidLoad {
  [super viewDidLoad];
  [self loadData];
}
- (void) viewWillDisappear: (BOOL) animated {
  [super viewWillDisappear: animated];
  [self saveData];
}

// in the UIApplicationDelegate implementation
- (void)applicationWillResignActive:(UIApplication *)application {
  [myCustomController saveData];
}

问题是,当这两个操作发生时,saveData不会被调用。因此,我建议将您的数据保存在AppDelegate上,以解决问题2(退出应用程序(

- (void)applicationDidEnterBackground:(UIApplication *)application
{
//Save data
}

至于问题1(切换视图时(,您只需要在视图控制器上调用此方法的saveData:

- (void)viewWillDisappear:(BOOL)animated
{
   //Save data
}

希望能有所帮助。

最新更新