从NSUserDefaults存储和检索长数组

-1 cocoa-touch objective-c ios

如何将长阵列存储NSUserDefaults并检索?

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

long *arr;
arr = new long [10];
for(int i = 0 ; i<10 ; i++)
{
arr[i] = i;
}
Run Code Online (Sandbox Code Playgroud)

现在我想将其存储arrNSUserDefaults稍后然后检索它

Bjö*_*lek 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];
}
Run Code Online (Sandbox Code Playgroud)