如何将长数组存储到NSUserDefaults
并检索它?
以下是我的长阵列的外观:
long *arr;
arr = new long [10];
for(int i = 0 ; i<10 ; i++)
{
arr[i] = i;
}
现在我想将此arr
存储到NSUserDefaults
中,然后再将其检索
答案 0 :(得分:7)
您只能在NSUserDefaults中存储对象。所以你必须将数组转换为NSArray
。但是,NSArrays也只存储对象,因此您需要存储封装在long
对象中的NSNumber
值:
//saving
NSUserDefaults *standardDefaults = [NSUserDefaults standardUserDefaults];
NSMutableArray *arrayObj = [[NSMutableArray alloc] init];
long *arr;
arr = new long [10];
for(int i = 0 ; i<10 ; i++) {
[arrayObj addObject:[NSNumber numberWithLong:arr[i]]];
}
[standardDefaults setObject:arrayObj forKey:@"longArray"];
[arrayObj release];
//reading
NSUserDefaults *standardDefaults = [NSUserDefaults standardUserDefaults];
NSArray *arrayObj = [standardDefaults objectForKey:@"longArray"];
long *arr;
arr = new long [10];
for(int i = 0 ; i<10 ; i++) {
arr[i] = [(NSNumber*)[arrayObj objectAtIndex:i] longValue];
}
答案 1 :(得分:2)
使用NSArray - 不是普通的c-array
NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
[standardUserDefaults setObject:myNSArray forKey:@"Prefs"];
提取:
NSArray *array = [standardUserDefaults objectForKey:@"Prefs"];