2012-08-12 87 views
0

使用NSUserDefaults类,可以保存与应用程序或用户数据相关的设置和属性。iOS SDK:使用NSUserDefaults

现在我有拖的问题:

  1. (设置和属性)在哪里存储? if =>这些对象将被保存在所谓的iOS“默认系统” 那么:什么是iOS“默认系统”

  2. 将保存多久?

回答

3

哪里?这取决于你正在开发什么样的应用程序。对于AppStore应用程序,在已安装的应用程序文件夹的沙箱文件夹中,更确切地说是在Library/Preferences文件夹中。包含设置的实际文件是一个PLIST(属性列表)文件,其名称与应用程序的包标识符相匹配。

总而言之:

(/var/mobile/Applications/XXXX-XXXX-XXXXXX-XXXXXXXX/MyApp.app/Library/Preferences/com.mycompany.bundleid.plist 

(其中XXXX等是一个UUID)。

如果您正在为越狱设备制作应用程序(即,一个Cydia的应用程序),这将是又一个plist文件,其名称的包ID匹配,但它将被安装在

/var/mobile/Library/Preferences/com.mycompany.bundleid.plist 

iOS的默认系统为基础框架,iOS设备本身和文件的一部分和管理,存储和修改您的偏好/设置/默认值的目录。

需要多长时间?再次,这取决于你正在写什么样的应用程序。对于一个普通的AppStore应用程序,默认值是持续到文件 - 但只要用户不删除你的应用程序。当你的应用程序被删除时,整个沙箱,应用程序包和od课程的用户默认值也将消失。永远,不可逆转。

如果您开发驻留在系统应用程序目录(/应用程序)中的越狱应用程序,那么即使用户删除了您的软件包/应用程序,用户默认文件也将在/ var/mobile/Library/Preferences中可用,因为APT(Cydia的支持包管理器)只会记录您的包最初包含的文件,而默认的属性列表文件(仅在您的应用第一次访问NSUserDefaults类时才会创建)并非如此。如果用户手动删除文件或恢复到股票固件,它会消失。

+1

+1为彻底的答案。 – jstr 2012-08-12 11:30:52

1

答案:

  1. 在应用程序的沙箱。无论如何,您不会直接访问默认设置,因此无关紧要。

  2. 只要您的应用程序在设备上。如果您删除了该应用程序,那么沙箱也会被删除,以至于它们被删除。如果您更新应用程序,则使用相同的沙箱,因此不会被删除。

至于什么是,我只是引用你了一下documentation的:

的类NSUserDefaults的提供与默认系统交互的编程接口。默认系统允许应用程序自定义其行为以匹配用户的偏好。例如,您可以允许用户确定应用程序显示的测量单位或文档自动保存的频率。应用程序通过将值分配给用户的默认数据库中的一组参数来记录此类偏好。这些参数被称为默认值,因为它们通常用于确定应用程序在启动时的默认状态或默认情况下的默认状态。

在运行时,您使用NSUserDefaults对象来读取应用程序在用户的默认数据库中使用的默认值。 NSUserDefaults缓存信息以避免每次需要默认值时都必须打开用户的默认数据库。同步方法会按周期自动调用,使内存中的缓存与用户的默认数据库保持同步。