私は iOS に比較的慣れていません (私が明確でない場合、または問題が他の場所で対処されている場合は、事前に謝罪します)、基本を学ぶために多くのチュートリアルを実行しました。それでも、コアデータで次のことを行う際に問題に直面しています。
- コア データを使用して DB からデータを取得し、並べ替えて表示する方法は理解していますが、計算して表示する必要がある属性 (DB のテーブルの一時的な属性) をプログラムで操作する方法がわかりません。ナビゲーションコントローラーに埋め込まれたテーブルビューコントローラー内の静的テーブルビューセル。
説明用: 2 つの変数( InputValue (integer) と inputDate (NSDate) )を持つテーブルがあり、1 年または 1 日ごとに毎日入力された値の平均/最小/最大を計算したいと考えています。これらの値は、テーブルビューの静的セル (セル内の各計算値) で毎回表示および更新されます。
編集:ここにテーブルビューコントローラーからいくつかのコードを追加しました:
- (void)configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath
{
//Configure the cell to show the user value as well as showing the date of input
PVMesswert *wert = [self.fetchedResultsController objectAtIndexPath:indexPath];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd.MM.yyyy"];
cell.textLabel.text= [[NSString alloc] initWithFormat:@"%@ kWh", wert.inputValue];
cell.detailTextLabel.text = [dateFormatter stringFromDate:wert.inputDate];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{ //should I have a different cell identifier for each row where I want to display a result of the calculations?
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
// Configure the cell.
[self configureCell:cell atIndexPath:indexPath];
return cell;
}
- (NSFetchedResultsController *)fetchedResultsController
{
if (_fetchedResultsController != nil) {
return _fetchedResultsController;
}
// Create and configure a fetch request with the PVMesswert entity.
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"PVMessWert" inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];
// Create the sort descriptors array.
NSSortDescriptor *datumsort = [[NSSortDescriptor alloc] initWithKey:@"inputDate" ascending:NO];
NSSortDescriptor *valueDescriptor = [[NSSortDescriptor alloc] initWithKey:@"InputValue" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:datumsort, /*authorDescriptor,*/ nil];
[fetchRequest setSortDescriptors:sortDescriptors];
// Create and initialize the fetch results controller.
_fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:@"dateToString" cacheName:@"Root"];
_fetchedResultsController.delegate = self;
// Memory management.
return _fetchedResultsController;
}
したがって、私が持っている別のテーブルビューでは、次のようなものを表示したいと思います: avg/max/min Inputvalue per year (属性入力日付 NSDat に基づく)。NSExpression を使用する必要がありますか?その場合、どのように使用しますか?