2014-05-18 119 views
-1

我遇到了我實施的UISearchBar問題。我的應用程序將編譯並運行,但只要我點擊搜索欄開始輸入一個單詞,就會崩潰。任何人都可以告訴我,如果你看到我的語法有什麼問題嗎?這是想通過我在我的NSArray中的狀態。UISearchBar問題Xcode 5

TableViewController.h

#import <UIKit/UIKit.h> 

@interface TableViewController : UITableViewController <UISearchBarDelegate> 

@property (nonatomic, strong) NSMutableArray *results; 

@property (nonatomic, strong) IBOutlet UISearchBar *searchBar; 

@end 

TableViewController.m

#import "TableViewController.h" 
#import "ViewController.h" 

@interface TableViewController() 

@end 

@implementation TableViewController 
{ 
NSArray *states; 
} 

- (NSMutableArray *)results 
{ 
if (!_results) 
{ 
    _results = [[NSMutableArray alloc] init]; 
} 
return _results; 
} 

- (id)initWithStyle:(UITableViewStyle)style 
{ 
self = [super initWithStyle:style]; 
if (self) { 
    // Custom initialization 
} 
return self; 
} 

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 

states = [NSArray arrayWithObjects:@"Alabama", @"Georgia", @"Tennessee", @"Colorado", nil]; 
} 

- (void)didReceiveMemoryWarning 
{ 
[super didReceiveMemoryWarning]; 
// Dispose of any resources that can be recreated. 
} 

- (void)searchThroughData 
{ 
self.results = nil; 

NSPredicate *resultsPredicate = [NSPredicate predicateWithFormat:@"SELF contains [search] [email protected]", self.searchBar.text]; 

self.results = [[states filteredArrayUsingPredicate:resultsPredicate] mutableCopy]; 
} 

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText 
{ 
[self searchThroughData]; 
} 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
return 1; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
if(tableView == self.tableView) 
{ 
    return [states count]; 
} 

else 
{ 
    [self searchThroughData]; 
    return self.results.count; 
} 
} 


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
static NSString *CellIdentifier = @"Cell"; 
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

if (!cell) 
{ 
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 
} 

if(tableView == self.tableView) 
{ 
    cell.textLabel.text = [states objectAtIndex:indexPath.row]; 
} 

else 
{ 
    cell.textLabel.text = self.results[indexPath.row]; 
} 

return cell; 
} 

我是相當新的Objective-C的,所以對不起,如果這是一個簡單的問題,我應該知道答案。

感謝

+1

什麼是完整的錯誤?你看過堆棧跟蹤嗎? – rmaddy

+2

見http://raywenderlich.com/10209/my-app-crashed-now-what-part-1 – rmaddy

+0

我發佈了完整的錯誤..它看起來類似於您發佈的鏈接 – javaGeek

回答

0

- (void)searchThroughData方法的第一行設置的NSMutableArray爲零。這可能是問題所在。