【发布时间】:2011-07-30 21:15:05
【问题描述】:
关于 iphone 应用程序中的属性列表的简单问题。我知道您可以从 plist 中读取数据,但是有没有办法将用户输入的数据写入 plist?如果是这样,怎么做?很容易找到关于从 plist 中读取信息的教程,但我很难找到关于写入 plist 的资源。
【问题讨论】:
标签: iphone objective-c persistence plist
关于 iphone 应用程序中的属性列表的简单问题。我知道您可以从 plist 中读取数据,但是有没有办法将用户输入的数据写入 plist?如果是这样,怎么做?很容易找到关于从 plist 中读取信息的教程,但我很难找到关于写入 plist 的资源。
【问题讨论】:
标签: iphone objective-c persistence plist
这就是我将数据项写入 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
【讨论】:
在NSArray 和NSDictionary 的文档中显示它们都有一个实例方法:
- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)flag
对于NSDictionary,它将此方法描述为
将字典内容的属性列表表示写入给定路径。
对于NSArray,它在讨论中这样说
此方法在写出文件之前递归地验证所有包含的对象都是属性列表对象,如果所有对象都不是属性列表对象,则返回 NO,因为生成的文件不是有效的属性列表。
因此,如果它们包含的项目可以在 plists 中使用,那么基本上这两个都会写 plist's,例如Array, Dictionary, Boolean, Data, Date, Number and String
【讨论】: