在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类中存储的所有数据
答案 0 :(得分:1)
您可以在userdefaults中存储和检索数组,而不是迭代您的数组并逐个存储它。而且你的钥匙是一样的。执行循环后,只有数组中的最后一个对象保存为密钥相同,每次都会覆盖最后一个对象。
您尝试实现外部循环的逻辑是在阵列上。内部逻辑包含不同的数组。你确定要计算外部循环和内部数组是否相同,这样你就不会得到像indexOutOfBounds
这样的异常。那么这是从nsuserdefaults保存和获取数组的正确方法。
试试这个: 保存:
[[NSUserDefaults standardUserDefaults] setObject:yourMutableArray forKey:@"anykey"];
用于检索:
NSMutableArray *array = [NSMutableArray arrayWithArray:[[NSUserDefaults standardUserDefaults] objectForKey:@"anykey"]];