将iPhone应用程序设置存储在应用程序中

21
我的iPhone应用程序有一些设置,用户可能经常更改。我想知道是否有处理此类设置(读取和保存它们)的建议方法。在苹果网站上,我只找到了一个有关将应用程序设置与设置应用程序集成的教程(链接),但我不希望用户退出我的应用程序,以便他可以更改选项。
在应用程序本身中是否有默认机制来处理这样的设置,还是我必须自己实现解决方案?
3个回答

42

在iPhone上存储设置的最佳且最简单的方法是通过NSUserDefaults。这样可以避免处理文件系统或属性列表等其他内容。

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

NSString *storedVal = @"This is what you want to save";
NSString *key = @"storedVal"; // the key for the data

[defaults setObject:storedVal forKey:key];
[defaults synchronize]; // this method is optional


// Get the results out
NSString *results = [defaults stringForKey:key];

以下是苹果关于可以存储在默认值中的对象类型的说明:

默认对象必须是属性列表,也就是说,它必须是 NSData、NSString、NSNumber、NSDate、NSArray 或 NSDictionary 的实例(或对于集合类型,这些类的组合)。如果您想要存储任何其他类型的对象,则通常应将其归档以创建 NSData 的实例。

还有一些细节需要注意,例如如果您存储了 NSDictionary,则键值必须是字符串。


2
能否存储除了 NSString 之外的其他类型的值,例如数字或日期? - RaYell
谢谢,伙计,这正是我想听到的答案。 - RaYell
使用这种方法,与Ortwin发布的“www.inappsettingskit.com”框架相比,有什么优势吗? - Greg
@Greg,如果这正是你想要的,InAppSettingsKit非常棒。不过,这些东西很容易实现。如果你只想保存一些简单的内容,我会说自己编写所有代码比将设置工具集成到你的应用程序中更容易。 - kubi

4

0
从 iPhone 开发者连接阅读 文件和网络指南。这将解释如何获取应用程序沙盒中不同预定义位置的路径。我建议您使用 NSDictionary 存储您的偏好设置,这可以轻松保存到文件系统并转换为 plist 格式。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接