Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何存储相对静态但可配置的信息_Iphone_Cocoa Touch_Ios_Application Settings_Property List - Fatal编程技术网

Iphone 如何存储相对静态但可配置的信息

Iphone 如何存储相对静态但可配置的信息,iphone,cocoa-touch,ios,application-settings,property-list,Iphone,Cocoa Touch,Ios,Application Settings,Property List,我有一个表(字典字典字典)来存储整数到字符串的映射。我有类型和子类型。e、 类型1=>水果和子类型1=>苹果 映射应可在我的设置界面中配置,但对于应用程序的重置,它相当静态。所以我不想每次检查映射时都从属性列表中读取。我只想在程序启动时读取一次,在用户更改设置时写入 运行时我应该将此表放在哪里?我有两个想法: (1) 就是将整个表作为变量放入应用程序委托中,在这种情况下,每次需要获取字符串时,我都需要使用objectForKey两次。 (2) 是使用静态变量创建一个类(尚不确定如何创建),并使用

我有一个表(字典字典字典)来存储整数到字符串的映射。我有类型和子类型。e、 类型1=>水果和子类型1=>苹果

映射应可在我的设置界面中配置,但对于应用程序的重置,它相当静态。所以我不想每次检查映射时都从属性列表中读取。我只想在程序启动时读取一次,在用户更改设置时写入

运行时我应该将此表放在哪里?我有两个想法: (1) 就是将整个表作为变量放入应用程序委托中,在这种情况下,每次需要获取字符串时,我都需要使用objectForKey两次。 (2) 是使用静态变量创建一个类(尚不确定如何创建),并使用class方法获取映射,例如+(NSString)stringForType:子类型:


请您评估这两种方法或提出更好的解决方案好吗?非常感谢

你把它放在哪里并不重要,只要你只保留一份副本,重要的是你应该检查一下。如果您将数据存储在plist中,并定期保存到plist中,您将获得持久性的巨大好处。您可以使用
[NSUserDefaults standardUserDefaults]自动获取该值对象。

您不想每次都读取plist的原因是什么?如果字典足够大,以至于每次从磁盘读取都太慢,那么它可能太大而无法保存在内存中。如果每次都从plist读取,不是很慢吗?考虑一下我是否把它放在viewDidLoad中。读写plists的速度惊人地快。为什么不试一试并对其进行分析?您可以始终在后台线程中执行此操作,并在加载时显示活动指示器。