如何从 Objective C、iOS 中的 NSUserDefaults 获取准确数据?
Posted
技术标签:
【中文标题】如何从 Objective C、iOS 中的 NSUserDefaults 获取准确数据?【英文标题】:How to get exact data from NSUserDefaults in Objective C,iOS? 【发布时间】: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"
如何从中获取实际数据。有人可以帮我正确获取此值吗? 提前致谢。
【问题讨论】:
这里没有错,除了你的问题。 How to save NSMutableArrays in NSUserDefaults 的可能重复项 数组中的每个对象都必须符合 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: 的实现。其中一个答案描述了如何编写这些。
【讨论】:
以上是关于如何从 Objective C、iOS 中的 NSUserDefaults 获取准确数据?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 iOS 9 和 Objective C 中的 .MOV 文件中获取缩略图?
如何在 iOS 8 Objective c 中的 UIWebView 中从文档中加载 png 图像
如何使用 Objective C iOS 从 iPhone X 中的表格视图顶部删除多余的空间