Как получить точные данные из NSUserDefaults в Objective C,iOS?
У меня есть NSMutableArray, и я пытаюсь сохранить этот массив в NSUserDefaults. Вот мой код:
сохранить:
NSUserDefaults *currentDefaults = [NSUserDefaults standardUserDefaults];
[currentDefaults setObject:[NSKeyedArchiver archivedDataWithRootObject:userSession.transactionArray] forKey:@"TransId"];
[currentDefaults synchronize];
извлечь:
NSUserDefaults *currentDefault = [NSUserDefaults standardUserDefaults];
NSData *dataRepresentingSavedArray = [currentDefault objectForKey:@"TransId"];
NSMutableArray *oldSavedArray = [NSKeyedUnarchiver unarchiveObjectWithData:dataRepresentingSavedArray];
userSession.transactionArray = [NSArray arrayWithArray:oldSavedArray];
Но я получаю свой массив в журнале,
"<NSIndexPath: 0x160f8640> {length = 2, path = 0 - 0}",
"<NSIndexPath: 0x1602bd70> {length = 2, path = 0 - 1}",
"<NSIndexPath: 0x16026900> {length = 2, path = 0 - 2}",
"<NSIndexPath: 0x14f01dd0> {length = 2, path = 0 - 3}"
Как получить реальные данные из этого. Может ли кто-нибудь помочь мне получить это значение правильно? Заранее спасибо.
2 ответа
Это похоже на: NSKeyedArchiver archivedDataWithRootObject:
Вы пропускаете реализации initWithCoder: и encodeWithCoder:. Один из ответов описывает, как их написать.
NSArray *aviArray=[[NSArray alloc] initWithObjects:@"A",@"B",@"C", nil];
[[NSUserDefaults standardUserDefaults] setObject:aviArray forKey:@"Arraykey"];
[[NSUserDefaults standardUserDefaults] synchronize];
NSLog(@"%@",[[[NSUserDefaults standardUserDefaults] objectForKey:@"Arraykey"] objectAtIndex:0]);
NSLog(@"%@",[[NSUserDefaults standardUserDefaults] objectForKey:@"Arraykey"]);