我想将一些数据存储为整数矩阵。为简单起见,我想说我想将这些数据存储在一个整数数组中。每次应用程序启动后,我想使用此数组填充我的模型。所以问题是如何在沙箱中存储整数数组? 我不想写和重写数据,也许只有一次开始。
我尝试了什么:
我知道存储在plists中并使用NSCoding
进行存储。但是这种策略用于更复杂的模型,而不仅仅是整数数组。
修改 是否更快使用c-arrays,将它们存储在txt文件中并制作自己的解析器?
答案 0 :(得分:3)
Plists和NSCoding也用于简单整数。
但是,您可以使用NSUserDefaults - 这是一种简单的方法:
[[NSUserDefaults standardUserDefaults] setObject:myArray forKey:@"AppData"];
以后也可以轻松地从任何地方检索。
答案 1 :(得分:2)
如你所说,你可以将它存储在一个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标准(并且我的意思是使用你自己制作的东西可能 bug,和/或引入奇怪的行为,其中Objective-C提供它自己的方式来做它)。请参阅this answer to know more about too much optimization。
答案 2 :(得分:0)
+(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