私のアプリは通貨計算機です。ViewController の TableView は、テキストフィールドが変更されるたびにデータをリロードします。[[textField text] length] == 0 の場合、tableView は初期データで更新する必要があります。コード全体を共有することはできませんが、次のようになります。
ViewController.m
- (void)viewDidLoad {
[super viewDidLoad];
array = [Model fromCoreData]; // initial data
}
- (void)textFieldDidChange:(id)textField {
if([[textField text]length] == 0) {
array = [Model fromCodeData]; //!
[tableView reloadData]; // table gets same array that was when textfield length == 1
}else{
array = [Model calculate:array withSum:[textField text]]; //return array with calculated data
[tableView reloadData];
}
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
//........
//here [cell setBuy:[[array object atIndex:indexPath]buy]] .......... etc.
//......
return cell;
}
問題: [[textfield text] length] == 0 の場合、テーブルは [[textfield text] length] == 1 の場合と同じ配列を取得しますが、初期値ではありません (テーブルはコアデータから元のデータを取得する必要があります)。
私は MagicalRecord を使用して CoreData を操作します。NSArray にはエンティティが含まれます。リアルタイムで CoreData に変更はありません。たぶん、誰かが同じ問題に直面しましたか?もっと適切な方法はありますか?私の悪い英語でごめんなさい:)