在iPhone上使用PLists进行持久化

时间:2011-07-30 21:15:05

标签: iphone objective-c persistence plist

关于iphone应用程序中的属性列表的简单问题。我知道你可以从plist中读取数据,但有没有办法将用户输入的数据写入plist?如果是这样,怎么样?很容易找到关于从plist读取信息的教程,但是我在找到写入plist的资源时遇到了麻烦。

2 个答案:

答案 0 :(得分:2)

这就是我将数据项写入plist的方式:

[myPlistFile setInteger: myInt forKey: @"someKey"];

当然,您可以使用setBool等为不同类型更改setInteger。

希望这有帮助!

-

编辑:

如果您的.plist是重要班级或类似人员的成员......

myClass的标题:

NSUserDefaults* myPreferences;
@property (nonatomic, retain) NSUserDefaults* myPreferences;

.m of myClass:

self.myPreferences = [NSUserDefaults standardUserDefaults]; // load our preferences
[[NSUserDefaults standardUserDefaults] registerDefaults: [NSDictionary dictionaryWithContentsOfFile: [[NSBundle mainBundle]pathForResource: @"nameOfFile" ofType: @"plist"]]]; // now load the custom .plist file

答案 1 :(得分:0)

NSArrayNSDictionary的文档中,它显示每个文档都有一个实例方法:

- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)flag

对于NSDictionary,它将此方法描述为

  

将字典内容的属性列表表示写入给定路径。

对于NSArray,它在讨论中说明了这一点

  

此方法在写出文件之前以递归方式验证所有包含的对象是属性列表对象,如果所有对象都不是属性列表对象,则返回NO,因为生成的文件不是有效的属性列表。

因此,如果它们包含的项目可以在plists中使用,那么基本上这两个都会写plist's Array, Dictionary, Boolean, Data, Date, Number and String