在iOS中存储多个静态数据的最佳实践

在iOS中存储多个静态数据的最佳实践,ios,cocoa,Ios,Cocoa,我需要存储预配置的值,这些值稍后将用于用户可以从iOS应用程序的表中选择的选项,可能有5-10个选项 就性能和效率而言,存储此类数据的最佳方式是什么? 我可能会想到以下几种方法: 渲染方法中的硬编码权限 数组 plist文件 核心数据 谢谢如果实际上只有5到10个数据项,那么您可以将它们存储在NSDictionary或数组中,并将其保存在plist文件中并从中读取。您可以分别使用dictionaryWithContentsOfFile方法或arrayWithContentsOfFile从pl

我需要存储预配置的值,这些值稍后将用于用户可以从iOS应用程序的表中选择的选项,可能有5-10个选项
就性能和效率而言,存储此类数据的最佳方式是什么?
我可能会想到以下几种方法:

  • 渲染方法中的硬编码权限
  • 数组
  • 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
比任何其他选项看起来都好。