Objective C iPhone开发,保存和检索NSMutableArray

use*_*935 0 iphone objective-c nsmutablearray ios xcode4.2

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

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

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

我发现我可以用这两种方法的NSMutableArray:writeToFileinitWithContentsOfFile ,但我不知道在哪里可以打电话给他们(是,当我将项目添加到UITableView中的?viewDidLoad

有人可以给我一个示例代码吗?

提前致谢

Den*_*nis 5

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

请注意,这些方法将能够保存你的东西,只有当你的阵列有以下类实例NSString,NSData,NSDate,NSNumber NSArray,或NSDictionary作为项目.

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

// 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];
}
Run Code Online (Sandbox Code Playgroud)