0

我正在构建一个非常简单的应用程序来存储姓名、年龄等人的数据。我让用户可以选择更改数据,例如一个人的生日。我想不出存储数据的最佳方式。

我已经搜索了很长时间,但找不到我正在寻找的简单答案。如果我更改可变数组中的数据,该数据是否会永久更改?我的意思是这会覆盖现有代码并更改数据,以便在应用程序关闭并再次重新加载时它仍然存在吗?

到目前为止,我无法做到这一点。我在 MySql 和 Sql server 方面有经验,所以如果可能的话,我倾向于朝那个方向发展,但如果可能的话,我真的很想使用可变数组或可变字典。这可能是一个如此基本的问题,但我无法在任何地方找到答案。

4

5 回答 5

1

看看核心数据。这是在 iOS 上管理此类数据存储需求的最简单方法。

看看我的书,它得到了很好的评价,非常适合你想做的事情:http ://www.amazon.com/Pro-Core-Data-iOS-Professionals/dp/1430233559

如果您想要一种简单的入门方法,也有大量的在线教程。例如,雷写了一些好东西:

http://www.raywenderlich.com/934/core-data-on-ios-5-tutorial-getting-started

于 2012-05-05T20:39:22.280 回答
1

你有一些误解。

您创建的对象在内存中。他们没有什么是永恒的。您必须以某种方式保存它们,否则当您退出应用程序并返回时它们就消失了。

如果你想保存一个数组,你有很多选择。

如果数组只包含 NSString、NSData、NSDate、NSNumber、NSArray 或 NSDictionary 类型的对象,则可以使用系统类 NSUserDefaults 保存数组。

NSArray 还有一个方法 writeToFile:atomically: 可以将数据数组保存到文件中。

但是,如果您的数组包含我上面列出的类型以外的任何对象,那么这些方法(NSUserDefaults 或 writeToFile:atomically)都不起作用。

另一种选择是使用 NSKeyedArchiver 将数组的内容转换为数据,然后将该数据写入文件。为了使该方法起作用,数组中的每个对象以及这些对象中的所有对象都需要支持 NSCoding 协议。

正如其他人指出的那样,您还可以使用 Core Data 或 mySQL 来保存数据,但这对于仅保存数组似乎有点过分了。

于 2012-05-06T01:54:05.990 回答
0

可变意味着您可以随时更改数据,所以不,它不是永久性的。

于 2012-05-05T20:26:33.800 回答
0

是的,就您所要求的而言,它将是永久性的。尽管由于数组是可变的,这意味着您可以随时更改数据,但初始数据将被这些新数据覆盖。

编辑:不,关闭应用程序后信息不会保留。您将需要以编程方式保存它。我会使用核心数据

于 2012-05-05T20:33:52.827 回答
0

CoreData 是数据在 Cocoa 和 Cocoa-Touch 中通常持久化的方式。它还为您提供了一些不错的附加功能,例如撤消支持。但它有一个很大的学习曲线。

如果您正在做的事情非常简单,请查看NSUserDefaults. 如果您需要更多的灵活性,您总是可以使用NSArray's -writeToFile:atomically:and -initWithContentsOfFile:(这两种方法的版本也都采用 URL 而不是文件路径)。

任何比这更复杂的事情,学习 CoreData 可能是值得的。

于 2012-05-06T02:51:45.480 回答