Tôi cố gắng để sử dụng một UISearchBar
để truy vấn nhiều thuộc tính của một NSManagedObject
Tôi có một NSManagedObject
gọi Person
, mỗi người đều có một tài sản name
và socialSecurity
. Ngay bây giờ mã của tôi có thể thực hiện tìm kiếm (tìm nạp) cho một trong các thuộc tính này hoặc thuộc tính kia, nhưng không phải cả hai cùng một lúc.iOS CoreData NSPredicate để truy vấn nhiều thuộc tính cùng một lúc
- (void) performFetch
{
[NSFetchedResultsController deleteCacheWithName:@"Master"];
// Init a fetch request
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"MainObject" inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];
// Apply an ascending sort for the color items
//NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"Term" ascending:YES selector:nil];
NSSortDescriptor *sortDescriptor;
sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"fullName" ascending:YES selector:@selector(caseInsensitiveCompare:)];
NSArray *descriptors = [NSArray arrayWithObject:sortDescriptor];
[fetchRequest setSortDescriptors:descriptors];
// Recover query
NSString *query = self.searchDisplayController.searchBar.text;
//if (query && query.length) fetchRequest.predicate = [NSPredicate predicateWithFormat:@"Term contains[cd] %@", query];
if(searchValue==1)
{
if (query && query.length) fetchRequest.predicate = [NSPredicate predicateWithFormat:@"name contains[cd] %@", query];
}
else {
if (query && query.length) fetchRequest.predicate = [NSPredicate predicateWithFormat:@"socialSecurity contains[cd] %@", query];
}
// Init the fetched results controller
NSError *error;
self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:@"pLLetter" cacheName:nil];
self.fetchedResultsController.delegate = self;
if (![[self fetchedResultsController] performFetch:&error]) NSLog(@"Error: %@", [error localizedDescription]);
[self.tableView reloadData];
}
Tôi không biết làm thế nào để đưa cả hai thuộc tính vào tuyên bố này ...
if (query && query.length) fetchRequest.predicate = [NSPredicate predicateWithFormat:@"name contains[cd] %@", query];
Bất kỳ sự giúp đỡ hay ý tưởng sẽ được đánh giá rất nhiều.
if (query && query.length) fetchRequest.predicate = [NSPredicate predicateWithFormat: @ "(fullName chứa [cd]% @) || (socialSecurity chứa [cd]% @) ", truy vấn, truy vấn]; – OscarTheGrouch