我想将一些数据存储为整数矩阵。为简单起见,假设我想将此数据存储在整数数组中。每次应用程序启动后,我想使用这个数组填充我的模型。所以问题是如何在沙箱中存储整数数组?我不想写入和重写数据,也许在第一次开始时只有一次。
我尝试了什么:我知道在 plist 中存储和使用NSCoding
. 但是这种策略用于更复杂的模型,而不仅仅是整数数组。
编辑: 使用 c 数组,将它们存储在 txt 文件中并制作自己的解析器是否更快?
我想将一些数据存储为整数矩阵。为简单起见,假设我想将此数据存储在整数数组中。每次应用程序启动后,我想使用这个数组填充我的模型。所以问题是如何在沙箱中存储整数数组?我不想写入和重写数据,也许在第一次开始时只有一次。
我尝试了什么:我知道在 plist 中存储和使用NSCoding
. 但是这种策略用于更复杂的模型,而不仅仅是整数数组。
编辑: 使用 c 数组,将它们存储在 txt 文件中并制作自己的解析器是否更快?
Plists 和 NSCoding 也用于简单整数。
但是,您可以只使用 NSUserDefaults - 这是最简单的方法:
[[NSUserDefaults standardUserDefaults] setObject:myArray forKey:@"AppData"];
以后也可以轻松地从任何地方检索。
您可以将其存储在 plist 中,正如您所说,这不是一个坏主意,它可以工作并完成工作。它一点也不复杂,真的,而且不仅用于复杂的模型。
否则,您可能想使用 NSUserDefaults :
if (![NSUserDefaults standardUserDefaults] objectForKey:@"AKey"]) {
[[NSUserDefaults standardUserDefaults] setObject:yourArray forKey:@"AKey"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
不要忘记您需要将整数包装到NSNumber
. 一个好的做法是使用 Objective-C 的“新”符号 : NSNumber * nb = @(42)
。那更具可读性[NSNumber numberWithInt:42]
。
祝你好运 !
编辑:根据您的编辑,不,至少现在不要使用您自己的解析器。当你真的不需要它时,不要尝试优化代码。尤其是它涉及“打破”Objective-C 标准(我的意思是使用您自己制作的东西,这些东西可能会出错,和/或在Objective-C 提供自己的方式时引入奇怪的行为)。请参阅此答案以了解有关过多优化的更多信息。
+(void)storeArrayInDeviceWithKey:(NSArray *)arrData withKey:(NSString *)key{
NSUserDefaults *currentDefaults = [NSUserDefaults standardUserDefaults];
[currentDefaults setObject:[NSKeyedArchiver archivedDataWithRootObject:arrData] forKey:key];
[currentDefaults synchronize];
}
对于 NSArray 你需要很少的对话
NSKeyedArchiver archivedDataWithRootObject:UR OBJECT