WiFi またはデータ接続がない場合に2NSMutableArray
をオブジェクトとして格納する iOS アプリがあります。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
の現在の値が空かどうかを最初に確認しています。NSMutableArray
保存されたコピーが存在するかどうかを確認するために行って確認するのは、そのときだけです。その場合は、配列をロードして、その内容をテーブルに表示する必要があります。