我嘗試了所有的東西,但它不起作用。我有負載plist tableview。我正在嘗試實現搜索功能。如何實現在plist中搜索字符串?
有我的代碼,
#import <UIKit/UIKit.h>
@interface TableViewController : UITableViewController <UISearchDisplayDelegate, UISearchBarDelegate>
@property (strong, nonatomic) IBOutlet UITableView *tableView;
@property(nonatomic)NSMutableArray *itemList;
@property (nonatomic)NSMutableArray *filteredNames;
@property (weak, nonatomic) IBOutlet UISearchBar *searchBar;
@property (nonatomic, strong) UISearchController *searchController;
當我尋找的東西,我可以看到的NSLog功能實體,但也有在tableview中沒有結果
-(void)searchDisplayController:(UISearchController *)controller didLoadSearchResultsTableView:(nonnull UITableView *)tableView
{
[tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"Cell"];
}
-(BOOL)searchDisplayController:(UISearchController *)controller shouldReloadTableForSearchString:(NSString *)searchString
{
[_filteredNames removeAllObjects];
if (searchString.length > 0) {
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF contains [search] %@",self.searchBar.text];
NSLog(@"%@",predicate);
NSString *filePathBundle = [[NSBundle mainBundle] pathForResource:@"Data" ofType:@"plist"];
NSDictionary *root = [NSDictionary dictionaryWithContentsOfFile:filePathBundle];
NSArray *films = [root objectForKey:@"FilmsPlaying"];
for (NSDictionary *dic in films) {
Films *f = [[Films alloc] initWithDictionary:dic];
[_filteredNames addObject:f];
}
}
return YES;
}
有我的.m文件
- (void)viewDidLoad {
[super viewDidLoad];
_searchController = [[UISearchController alloc]init];
self.filteredNames = [[NSMutableArray alloc]init];
[self.tableView dataSource];
[self.tableView delegate];
[self.tableView reloadData];
}
有我的plist;
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>FilmsPlaying</key>
<array>
<dict>
<key>ZFILMTIME</key>
<integer>90</integer>
<key>ZFILMDATESTART</key>
<date>2015-04-01T09:15:42Z</date>
<key>ZFILMCONTENT</key>
<string>bla bla bla </string>
<key>ZFILMDIRECTOR</key>
<string>Don Hall,Chris Williams</string>
<key>ZFILMID</key>
<string></string>
<key>ZFILMIMAGE</key>
<string>bla.jpg</string>
<key>ZFILMNAME</key>
<string> Big Hero 6</string>
<key>ZFILMTYPE</key>
<string>bla bla bla </string>
<key>ZFILMVOTE</key>
<integer>10</integer>
</dict>
<dict>
<key>ZFILMTIME</key>
<integer>90</integer>
<key>ZFILMDATESTART</key>
<date>2015-04-01T09:15:42Z</date>
<key>ZFILMCONTENT</key>
<string>bla bla bla .</string>
<key>ZFILMDIRECTOR</key>
<string>Frankie Chung</string>
<key>ZFILMID</key>
<string></string>
<key>ZFILMIMAGE</key>
<string>bla.jpg</string>
<key>ZFILMNAME</key>
<string>bla bla bla </string>
<key>ZFILMTYPE</key>
<string>bla bla bla </string>
<key>ZFILMVOTE</key>
<real>9.5</real>
</dict>
</array>
</dict>
我等待着您的諮詢,謝謝
添加以下代碼並檢查:NSPredicate * predicate = [NSPredicate predicateWithFormat:@「SELF CONTAINS [cd]%@」,self.searchBar.text]; –
不,不起作用。應用程序剛剛崩潰 – ahmetberkaycalisti