-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的,所以對不起,如果這是一個簡單的問題,我應該知道答案。
感謝
什麼是完整的錯誤?你看過堆棧跟蹤嗎? – rmaddy
見http://raywenderlich.com/10209/my-app-crashed-now-what-part-1 – rmaddy
我發佈了完整的錯誤..它看起來類似於您發佈的鏈接 – javaGeek