无法访问使用NSUserDefaults存储的数组值

时间:2016-02-18 11:08:23

标签: ios objective-c json

在A类中,我将数组存储在NSUserDefaults中,

for (int i=0; i< [array count]; i++)
{      
   NSLog(@"Name %@",names[i]);
   NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
   [userDefaults setObject:names[i] forKey:@"names"];
   [userDefaults setObject:description[i] forKey:@"description"];
   [userDefaults setObject:date[i] forKey:@"date"];
   [userDefaults synchronize];
 }

在B组中,我试图按如下方式访问数据,

NSUserDefaults *acessDefaults = [NSUserDefaults standardUserDefaults];
NSArray *arrayOfCompanies = [acessDefaults objectForKey:@"companyNames"];
NSArray *arrayOfText = [acessDefaults objectForKey:@"text"];
NSArray *arrayOfDate = [acessDefaults objectForKey:@"date"];
NSLog(@"Dates %@",arrayOfDate);

但它没有打印出数组的所有内容。相反,它打印存储在顶部的单个值。如何从B类访问A类中存储的所有数据

1 个答案:

答案 0 :(得分:1)

您可以在userdefaults中存储和检索数组,而不是迭代您的数组并逐个存储它。而且你的钥匙是一样的。执行循环后,只有数组中的最后一个对象保存为密钥相同,每次都会覆盖最后一个对象。

您尝试实现外部循环的逻辑是在阵列上。内部逻辑包含不同的数组。你确定要计算外部循环和内部数组是否相同,这样你就不会得到像indexOutOfBounds这样的异常。那么这是从nsuserdefaults保存和获取数组的正确方法。

试试这个: 保存:

[[NSUserDefaults standardUserDefaults] setObject:yourMutableArray forKey:@"anykey"];

用于检索:

NSMutableArray *array = [NSMutableArray arrayWithArray:[[NSUserDefaults standardUserDefaults] objectForKey:@"anykey"]];