我正在构建一个非常简单的应用程序来存储姓名、年龄等人的数据。我让用户可以选择更改数据,例如某人的生日。我想不出存储数据的最佳方式。
我已经搜索了很长时间,但找不到我正在寻找的简单答案。如果我更改可变数组中的数据,该数据是否会永久更改?我的意思是,这会覆盖现有代码并更改数据,以便在应用程序关闭并再次重新加载时它仍然存在吗?
到目前为止,我无法做到这一点。我在 MySql 和 Sql 服务器方面有经验,所以如果可能的话我倾向于朝那个方向发展,但如果可能的话我真的很想使用可变数组或可变字典。这可能是一个基本问题,但我无法在任何地方找到答案。
最佳答案
你有一些误解。
您创建的对象在内存中。他们没有什么是永久的。您必须以某种方式保存它们,否则当您退出应用程序并返回时它们就会消失。
如果你想保存一个数组,你有很多选择。
如果数组仅包含 NSString、NSData、NSDate、NSNumber、NSArray 或 NSDictionary 类型的对象,则可以使用系统类 NSUserDefaults 保存数组。
NSArray 也有一个方法 writeToFile:atomically: 可以将数据数组保存到文件中。
但是,如果您的数组包含我上面列出的类型以外的任何对象,那么这些方法(NSUserDefaults 或 writeToFile:atomically)都不会起作用。
另一种选择是使用 NSKeyedArchiver 将数组的内容转换为数据,然后将该数据写入文件。为了使该方法起作用,数组中的每个对象以及这些对象中的所有对象都需要支持 NSCoding 协议(protocol)。
正如其他人所指出的,您也可以使用 Core Data 或 mySQL 来保存数据,但这对于仅保存数组来说似乎有点过分了。
关于objective-c - 在可变数组中添加或替换的对象是否会自动持久化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10465688/