【问题标题】:How to get exact data from NSUserDefaults in Objective C,iOS?如何从 Objective C、iOS 中的 NSUserDefaults 获取准确数据?
【发布时间】:2015-07-29 12:40:12
【问题描述】:

我有 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}"

如何从中获取实际数据。有人可以帮我正确获取此值吗? 提前致谢。

【问题讨论】:

  • 这里没有错,除了你的问题。
  • 数组中的每个对象都必须符合 协议才能正确保存/检索数组。
  • 您应该询问有关显示 nsdata 对象的问题

标签: ios objective-c iphone nsmutablearray nsindexpath


【解决方案1】:
 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"]);

【讨论】:

    【解决方案2】:

    这类似于:NSKeyedArchiver archivedDataWithRootObject:

    您缺少 initWithCoder: 和 encodeWithCoder: 的实现。其中一个答案描述了如何编写这些。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-30
      • 1970-01-01
      • 1970-01-01
      • 2016-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-18
      相关资源
      最近更新 更多