0

40 個のオブジェクトを含むテーブル ビューがあります。UISegment (男性、女性、両方) をクリックするときに、性別でフィルタリングする必要があります。動作しているように見えますが、テーブル ビューが更新されません。どんな助けでも感謝します。

  -(void)viewDidLoad
{
  [super viewDidLoad];

 self.navigationItem.title = @"People";   
    [self loadall];

  [[NSBundle mainBundle] loadNibNamed:@"FilterSortView" owner:self options:nil];

  self.filterControl.selectedSegmentIndex = -1;
  [self.filterControl addTarget:self action:@selector( changeSegge ) forControlEvents:UIControlEventValueChanged];

}

#

性別でフィルタリングする2番目の方法

- (void)changeSegge
{
    NSEntityDescription *personEntity = [NSEntityDescription entityForName:@"Person"
                                                    inManagedObjectContext:self.managedObjectContext];
    NSFetchRequest *request = [[NSFetchRequest alloc] init];
    [request setEntity:personEntity];
    NSError *error = nil;
    self.people = [self.managedObjectContext executeFetchRequest:request error:&error];
    if (error)
    {
        [NSException raise:NSInternalInconsistencyException format:@"Could not fetch Core Data records: %@",error];
    }

    if(filterControl.selectedSegmentIndex == 0){

        NSPredicate *predicatem =[NSPredicate predicateWithFormat:@"gender == %@", @"m" ];
        request.predicate=predicatem;

        [self.tableView reloadData];
        [request release];
        NSLog(@"button 1");    

   }

どうもありがとう。

4

1 に答える 1

0

リクエストをフェッチするように設定された述語の後に people 配列を埋めるのを忘れました。

更新されたchangeSegge方法は次のとおりです。

- (void)changeSegge
{
    NSEntityDescription *personEntity = [NSEntityDescription entityForName:@"Person"
                                                    inManagedObjectContext:self.managedObjectContext];
    NSFetchRequest *request = [[NSFetchRequest alloc] init];
    [request setEntity:personEntity];
    NSError *error = nil;
    self.people = [self.managedObjectContext executeFetchRequest:request error:&error];
    if (error)
    {
        [NSException raise:NSInternalInconsistencyException format:@"Could not fetch Core Data >records: %@",error];
    }

    if(filterControl.selectedSegmentIndex == 0){

        NSPredicate *predicatem =[NSPredicate predicateWithFormat:@"gender == %@", @"m" ];
        request.predicate=predicatem;
        self.people = [self.managedObjectContext executeFetchRequest:request error:&error];
        [self.tableView reloadData];
        [request release];
        NSLog(@"button 1");    

    }
于 2013-10-15T05:31:25.417 に答える