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

Posted

技术标签:

【中文标题】在应用程序中存储 iPhone 应用程序设置【英文标题】:Storing iPhone application settings in app 【发布时间】:2011-01-14 18:12:28 【问题描述】:

我的 iPhone 应用几乎没有用户可能会经常更改的设置。我想知道是否有任何建议的方式来处理这些设置(读取和保存它们)。在 Apple 网站上,我只找到了有关将应用程序设置与设置应用程序 (link) 集成的教程,但我不希望用户退出我的应用程序,因此他可以更改选项。

是否有任何默认机制来处理应用程序本身的此类设置,还是我必须实施自己的解决方案?

【问题讨论】:

【参考方案1】:

在 iPhone 中存储设置的最佳和最简单的方法是通过 NSUserDefaults。使您不必处理文件系统或 plist 或任何其他东西。

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];

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

默认对象必须是属性 列表,即(或为 集合实例的组合 的):NSData,NSString,NSNumber, NSDate、NSArray 或 NSDictionary。如果 您想存储任何其他类型的 对象,您通常应该归档 它创建一个 NSData 的实例。

还有一些注意事项,例如,如果您存储 NSDictionary,则键值必须是字符串。

【讨论】:

是否可以存储除NSString 以外的类型的值,例如数字或日期? 谢谢伙计,这正是我想听到的答案。 与仅使用 Ortwin 发布的“www.inappsettingskit.com”之类的框架相比,这样做有优势吗? @Greg inappsettingskit 如果这是您想要的,那就太好了。不过,这些东西很容易实现。如果您只想保存一些东西,我会说自己编写所有代码比将设置工具包集成到您的应用程序中更容易。【参考方案2】:

如果您正在寻找用于从应用内部编辑设置的 UI,请查看 InAppSettingsKit,地址为 http://www.inappsettingskit.com

【讨论】:

【参考方案3】:

从 iPhone Developer Connection 阅读File and Networking Guide。它将解释如何获取应用程序沙箱中不同预定义位置的路径。我建议您使用 NSDictionary 来存储您的首选项,这些首选项可以轻松保存到文件系统并转换为 plist。

【讨论】:

以上是关于在应用程序中存储 iPhone 应用程序设置的主要内容,如果未能解决你的问题,请参考以下文章

在模拟器中关闭 iPhone

在 iPhone 设置中禁用每个应用程序的 iCloud

在 iPhone 上使用 SQLite 数据库的空间请求

较小的 MapKit 缩放间隔 iPhone

如何使存储在文档目录中的 plist 在 iPhone 和 iPad 之间为通用应用程序同步?

iOS 4实战 pdf