在iOS中存储多个静态数据的最佳实践
我需要存储预配置的值,这些值稍后将用于用户可以从iOS应用程序的表中选择的选项,可能有5-10个选项在iOS中存储多个静态数据的最佳实践,ios,cocoa,Ios,Cocoa,我需要存储预配置的值,这些值稍后将用于用户可以从iOS应用程序的表中选择的选项,可能有5-10个选项 就性能和效率而言,存储此类数据的最佳方式是什么? 我可能会想到以下几种方法: 渲染方法中的硬编码权限 数组 plist文件 核心数据 谢谢如果实际上只有5到10个数据项,那么您可以将它们存储在NSDictionary或数组中,并将其保存在plist文件中并从中读取。您可以分别使用dictionaryWithContentsOfFile方法或arrayWithContentsOfFile从pl
就性能和效率而言,存储此类数据的最佳方式是什么?
我可能会想到以下几种方法:
- 渲染方法中的硬编码权限
- 数组
- plist文件
- 核心数据
谢谢如果实际上只有5到10个数据项,那么您可以将它们存储在NSDictionary或数组中,并将其保存在plist文件中并从中读取。您可以分别使用
dictionaryWithContentsOfFile
方法或arrayWithContentsOfFile
从plist读取,并使用writeToFile
进行写入
对于大量数据,您可以查看核心数据 如果实际上只有5到10个数据项,那么您可以将它们存储在NSDictionary或数组中,并将其保存在plist文件中并从中读取。您可以分别使用
dictionaryWithContentsOfFile
方法或arrayWithContentsOfFile
从plist读取,并使用writeToFile
进行写入
对于大量数据,您可以查看核心数据 静态数据应存储在将加载值的适当类的静态变量中 无论是否从文件加载字典,这里是如何静态加载字典或数组,以便在应用程序中只加载一次
//.h
@interface MyApp
+(void) initialize; //will only be called once when the class is loaded
//.m
static NSArray *myListOfStuff;
@implementation MyApp
+(void) initialize {
//...either load your values from a file or hard code the values here
//init and assign values to myListOfStuff
}
//a statis getter for the list
+(NSArray *) listOfStuff {
return myListOfStuff;
}
//Client Code to get the list in your app
NSArray *myList = [MyApp listOfStuff];
//This memory will not be released for the life of the application.
//it will be loaded once and only once - its efficient
谷歌将字典或数组持久化到plist,如果持久化是您所追求的
我向您展示的是如何在对象模型中高效地构建加载静态数据的结构
无论采用何种持久性方法,静态数据都应存储在将加载值的适当类的静态变量中 无论是否从文件加载字典,这里是如何静态加载字典或数组,以便在应用程序中只加载一次
//.h
@interface MyApp
+(void) initialize; //will only be called once when the class is loaded
//.m
static NSArray *myListOfStuff;
@implementation MyApp
+(void) initialize {
//...either load your values from a file or hard code the values here
//init and assign values to myListOfStuff
}
//a statis getter for the list
+(NSArray *) listOfStuff {
return myListOfStuff;
}
//Client Code to get the list in your app
NSArray *myList = [MyApp listOfStuff];
//This memory will not be released for the life of the application.
//it will be loaded once and only once - its efficient
谷歌将字典或数组持久化到plist,如果持久化是您所追求的
我向您展示的是如何在对象模型中高效地构建加载静态数据的结构
无论采用何种持久性方法,您的所有示例都非常适合程序中的预配置值,而不是用户输入。@kirilloid如果一开始不清楚,很抱歉,是的,实际上我要求存储用户可以选择的预配置值,与用户输入无关的核心数据是多余的。将其硬编码到渲染方法中,或者,如果您认为该代码在其他地方可能有用,请使用包含数组或字典的plist文件。如果担心效率,请加载plist文件一次,并将数据保存在内存中。硬编码值无论如何都不好
plist
看起来比任何其他选项都好。您的所有示例看起来都非常适合程序中的预配置值,而不是用户输入。@kirilloid很抱歉,如果一开始不清楚,是的,实际上我要求存储用户可以选择的预配置值,与用户输入无关的核心数据是多余的。将其硬编码到渲染方法中,或者,如果您认为该代码在其他地方可能有用,请使用包含数组或字典的plist文件。如果担心效率,请加载plist文件一次,并将数据保存在内存中。硬编码值无论如何都不好plist
比任何其他选项看起来都好。