在 iPhone 上使用 PList 进行持久化

发布于 2024-11-27 12:12:06 字数 133 浏览 0 评论 0原文

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

Simple question about property lists within an iphone app. I know you can read data in from a plist, but is there a way to write user-inputted data to a plist? If so, how? It's easy to find tutorials on reading information from plists, but I'm having trouble finding resources on writing to plists.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

差↓一点笑了 2024-12-04 12:12:06

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

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

当然,您可以针对不同类型更改 setInteger 和 setBool 等。

希望这有帮助!

--

编辑:

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

myClass 的标头:

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

myClass 的 .m:

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

This is how I write data items to a plist:

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

Of course, you can change setInteger with setBool, etc for different types.

Hope this helps!

--

Edit:

If your .plist was a member of an important class or similar...

Header of 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
紙鸢 2024-12-04 12:12:06

NSArray和<一个href="http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSDictionary_Class/Reference/Reference.html" rel="nofollow">NSDictionary 它显示它们每个都有一个实例方法:

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

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

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

对于 NSArray 它在讨论中这样说

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

因此,如果它们包含的项目可以在 plist 中使用,那么本质上它们都会写入 plist,例如数组、字典、布尔值、数据、日期、数字和字符串

In the docs for both NSArray and NSDictionary it shows they each have an instance method:

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

For NSDictionary it describes this method as

Writes a property list representation of the contents of the dictionary to a given path.

For NSArray it says this in the discussion

This method recursively validates that all the contained objects are property list objects before writing out the file, and returns NO if all the objects are not property list objects, since the resultant file would not be a valid property list.

So essentially both of these will write plist's if the items that they contain can be used in plists e.g. Array, Dictionary, Boolean, Data, Date, Number and String

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文