我有一个 iOS 应用程序,在没有 WiFi 或数据连接的情况下将两个NSMutableArray
's 作为对象存储在其中。NSUserDefaults
在随后的访问中,用户应该能够通过从中检索保存的数据来将存储的数据加载到他们的表中NSUserDefaults
,但不幸的是我无法这样做。NSMutableArrays
它们正在存储将各种NSString
值作为参数的对象。
这是将我的数据保存在我的 Singleton 类中的代码:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:[DataModel sharedInstance].testResultList forKey:@"resultTable"];
[defaults setObject:[DataModel sharedInstance].testResults forKey:@"jsonTable"];
[defaults synchronize];
这是来自UITableView
类的代码,它应该检索数据并将它们加载到表中:
- (void)viewDidLoad
{
[super viewDidLoad];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([[DataModel sharedInstance].testResults count] == 0) {
if ([defaults objectForKey:@"resultTable"] == nil) {
return;
}
else {
[DataModel sharedInstance].testResultList = [defaults objectForKey:@"resultTable"];
[DataModel sharedInstance].testResults = [defaults objectForKey:@"jsonTable"];
}
}
}
这是我的cellForRowAtIndexPath()
方法:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"testresultcell";
ResultTableViewCell *cell = (ResultTableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[ResultTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
// Configure the cell...
TestResult *tResult = [[DataModel sharedInstance].testResultList objectAtIndex:indexPath.row];
cell.name.text = tResult.testTitle;
cell.date.text = tResult.dateStamp;
cell.score.text = [[DataModel sharedInstance] getScore:tResult.score];
cell.imgView.image = [UIImage imageNamed:[[DataModel sharedInstance] getImg:tResult.score]];
return cell;
}
谁能看到我做错了什么?我最初正在检查NSMutableArray
's 的当前值是否为空。只有这样我才会去检查是否NSMutableArray
存在已保存的副本。如果是这样,那么我需要加载数组并在我的表中显示内容。