首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >目标C iPhone开发、保存和检索NSMutableArray

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

Stack Overflow用户
提问于 2011-12-01 15:46:15
回答 2查看 700关注 0票数 0

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-(void)saveData{
    [NSKeyedArchiver archiveRootObject:[data copy] toFile:[self dataFilePath]];
}
- (void)loadData
{
    data = [NSKeyedUnarchiver unarchiveObjectWithFile:self.dataFilePath];
}

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

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

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

提前感谢

EN

回答 2

Stack Overflow用户

发布于 2011-12-01 15:52:06

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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 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];
}
票数 5
EN

Stack Overflow用户

发布于 2011-12-01 15:53:13

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- (void)applicationDidEnterBackground:(UIApplication *)application
{
//Save data
}

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- (void)viewWillDisappear:(BOOL)animated
{
   //Save data
}

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8344114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文