在我的应用程序的登录过程中,我循环访问服务器响应并在NSUserDefaults中保存一些数据:
NSMutableArray *unitTypeArray = [[NSMutableArray alloc] init];
[unitTypeArray addObject:@{@"Name":@"Item",
@"Description":@"Item",
@"ID":@"0",
@"Time":@"2014-12-29 12:00:00",
@"AddedByUserID":@"2",
@"Depth":@"0",
@"Height":@"0",
@"Width":@"0",
@"softLimit":@"10"}];
for (NSMutableDictionary *unitType in response) {
[unitType setValue:@10 forKey:@"softLimit"];
[unitTypeArray addObject:unitType];
}
[[NSUserDefaults standardUserDefaults] setObject:unitTypeArray forKey:@"unitTypes"];
后来我正在检索这个数组:
self.unitTypeArr = [[self.preferences objectForKey:@"unitTypes"] mutableCopy];
但是我得到了一个NSDictionary。这完全适用于iOS< 9.0但是从iOS 9.0开始我的应用程序崩溃了。有没有解决方法,还是我必须将NSDictionary转换为NSArray?
答案 0 :(得分:1)
您将 unitTypeArray 保存到 NSUserDefault 。对?因为它的类型是 NSMutableArray ;因此,您将从首选项获得数组。为什么你期待 NSDictionary ?
通过这种方式检索数据
NSMutableArray *unitTypeArr = [[NSUserDefaults standardUserDefaults] objectForKey:@"unitTypes"];
答案 1 :(得分:0)
我找到了一种方法来实现它。我的问题中的第一个代码块仅在之前未检索到数据的情况下运行。我无法理解为什么,但如果我每次登录都会运行它,它就可以了。即使它包含完全相同的数据。