从NSUserDefaults存储和检索长数组

时间:2010-12-28 14:57:51

标签: ios objective-c cocoa-touch

如何将长数组存储到NSUserDefaults并检索它?

以下是我的长阵列的外观:

long *arr;
arr = new long [10];
for(int i = 0 ; i<10 ; i++)
{
arr[i] = i;
}

现在我想将此arr存储到NSUserDefaults中,然后再将其检索

2 个答案:

答案 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"];