という属性を設定したテーブルがありますname
。同じものの名前が複数存在する可能性があるため、最初のテーブルは name の個別の値を取得します。次のテーブル ビューは、この特定の値の重複を開きます。
ただし、私が抱えている問題は、重複から取得された情報が最新の付属属性からのみ取得されることです。したがって、それらはすべて同じ情報を指しています。
テーブルに配置するオブジェクトを取得するメソッドを次に示します。
AppDelegate.m
- (NSArray *)allLikePlaces:(id)place {
NSManagedObjectContext *moc = [[SVAppDelegate sharedAppDelegate] managedObjectContext];
NSFetchRequest *fetch = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Place" inManagedObjectContext:moc];
[fetch setEntity:entity];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name like %@", place];
[fetch setPredicate:predicate];
NSError *error;
NSArray *result = [moc executeFetchRequest:fetch error:&error];
if(error){
NSLog(@"allPlaces error: %@", [error localizedDescription]);
}
return result;
}
オブジェクトをテーブルに配置する方法です。
TableView.m
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
SVAppDelegate *ad = [SVAppDelegate sharedAppDelegate];
NSArray *list = [ad allLikePlaces:_place];
NSManagedObject *obj = list[indexPath.row];
cell.textLabel.text = [obj valueForKey:@"name"];
return cell;
}
これらのオブジェクトのそれぞれに、最新のレコードだけでなく、対応するデータを表示させることができます。
ベースの実装を実装しようとしましたobjectID
が、成功しませんでした。これに関するご支援をいただければ幸いです。