2013-09-02 2 views
1

Привет в моем приложении У меня есть TableView, в котором я что-то показываю, и я хочу искать в этом TableView текст, который я пишу в строке поиска, поэтому я последовал этому tutorial. В моем приложении у меня проблема, когда я запускаю приложение, и я пытаюсь найти письмо, которое он сбой, а в xCode я вижу эту информацию: Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<__NSCFString 0x9e45990> valueForUndefinedKey:]: this class is not key value coding-compliant for the key name.'. Я проверил свою раскадровку, чтобы увидеть, есть ли у меня что-то неправильно, но все в порядке. Поэтому я предполагаю, что проблема в коде, я выложу здесь свой код, и я надеюсь, что вы можете помочь мне в том, что случилось.Ошибка IOS при использовании строки поиска

#import "TableWasteViewController.h" 
#import "WasteXmlParser.h" 
#import "WasteDetailViewController.h" 

@interface TableWasteViewController() 

@property(nonatomic,strong)NSArray *arrayWastes; 
@property(nonatomic,strong)NSMutableArray *typeOfWaste; 
@property(nonatomic,strong)NSMutableArray *typeOfBin; 
@property(nonatomic,strong)NSMutableArray *indexWastes; 
@property(nonatomic,strong)NSMutableArray *typeOfWasteBackup; 

@end 

@implementation TableWasteViewController 
@synthesize searchBar; 
@synthesize filteredWasteArray; 
@synthesize typeOfWaste; 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     // Custom initialization 
    } 
    return self; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view. 
    WasteXmlParser *parser = [[WasteXmlParser alloc]init]; 
    [parser parseWasteXml]; 
    self.arrayWastes = [[NSArray alloc]init]; 
    self.arrayWastes = [parser.arrayWastes mutableCopy]; 
    self.indexWastes = [[NSMutableArray alloc]init]; 
    typeOfWaste = [[NSMutableArray alloc]init]; 
    self.typeOfBin = [[NSMutableArray alloc]init]; 
    for (int i = 0; i < [self.arrayWastes count]; i++) { 
     [typeOfWaste addObject:[self.arrayWastes[i] objectForKey:@"type"]]; 
    } 

    self.filteredWasteArray = [NSMutableArray arrayWithCapacity:[self.typeOfWaste count]]; 

    self.typeOfWasteBackup = [self.typeOfWaste mutableCopy]; 
} 

#pragma mark Content Filtering 
- (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope { 
    [self.filteredWasteArray removeAllObjects]; 

    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF.name contains[c] %@", searchText]; 
    filteredWasteArray = [NSMutableArray arrayWithArray:[typeOfWaste filteredArrayUsingPredicate:predicate]]; 
} 

#pragma mark - UISearchDisplayController Delegate Methods 
- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString { 
    [self filterContentForSearchText:searchString scope: 
    [[self.searchDisplayController.searchBar scopeButtonTitles] objectAtIndex:[self.searchDisplayController.searchBar selectedScopeButtonIndex]]]; 
    return YES; 
} 

- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchScope:(NSInteger)searchOption { 
    [self filterContentForSearchText:self.searchDisplayController.searchBar.text scope: 
    [[self.searchDisplayController.searchBar scopeButtonTitles] objectAtIndex:searchOption]]; 
    return YES; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    //return self.arrayWastes.count; 
    if (self.tableWaste == self.searchDisplayController.searchResultsTableView) { 
     return [filteredWasteArray count]; 
    } else { 
     return [self.arrayWastes count]; 
    } 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"Cell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    UIFont *myFont = [UIFont fontWithName:@"Arial" size:14.0]; 
    if (cell == nil) { 
     cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
    } 

    cell.textLabel.font = myFont; 
    cell.textLabel.numberOfLines = 2; 
    //cell.textLabel.text = [self.arrayWastes[indexPath.row]objectForKey:@"type"]; 
    if (self.tableWaste == self.searchDisplayController.searchResultsTableView) { 
     cell.textLabel.text = [self.filteredWasteArray[indexPath.row]objectForKey:@"type"]; 
    } else { 
     cell.textLabel.text = [self.arrayWastes[indexPath.row]objectForKey:@"type"]; 
    } 
    return cell; 
} 

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    NSIndexPath *indexPath = [self.tableWaste indexPathForSelectedRow]; 
    WasteDetailViewController *vc = segue.destinationViewController; 
    vc.typeOfWaste = [self.arrayWastes[indexPath.row]objectForKey:@"type"]; 
    vc.typeOfBin = [self.arrayWastes[indexPath.row]objectForKey:@"place"]; 
    vc.urlPic = [self.arrayWastes[indexPath.row]objectForKey:@"imgUrl"]; 
} 

- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
} 

- (IBAction)backToHome:(id)sender { 
    [self dismissViewControllerAnimated:YES completion:nil]; 
} 
@end 

Спасибо!

ОБНОВЛЕНИЕ Я размещаю здесь экран моей раскадровки, в котором вы можете увидеть соединение контроллера таблицы.

Connection for the WasteTableViewController

+1

Проверьте один раз, если вы указали правильные классы в своем xib. Проверьте выходы, которые вы дали. Удалите его и установите его правильно и проверьте. – Manthan

+0

Я вижу ошибку, пока я подключаю строку поиска к контроллеру отображения отображения – lucgian84

ответ

1

Проверьте раскадровки еще раз, там вы должны найти сиротский IBOutlet под названием «имя», удалить, что и строить. Он должен работать нормально. Удачи!

+0

. Первая ошибка: я назвал выход для строки поиска. Поиск Bar и xCode вызывает searchBar тоже соединение с Search Display Controller. Теперь я исправил его, но все равно буду обновлять свой вопрос, чтобы показать вам соединение в моей раскадровке – lucgian84

Смежные вопросы