У меня есть опыт разработки Java и Android, и теперь я пытаюсь изучить Objective-C и разработку iPhone/iPad. Чтобы научить себя, я переписываю приложение, которое я сделал для Android, для iPhone.UISearchBar, NSPredicate, w/Array of Objects
Теперь я пытаюсь использовать UISearchBar в представлении таблицы, которое я заполнил именами из объектов-членов. Однако у меня возникает проблема с использованием NSPredicate для извлечения свойств имени из созданных мной объектов-членов, поскольку он сбой. Я смог создать обходной путь, создав совершенно отдельный массив, заполненный только именами, и использую его с NSPredicate, но это далеко не идеально и создает проблемы в будущем.
Итак, в основном, я смог определить проблему, как использовать NSPedicate, или, может быть, установить объекты-члены в предыдущем классе. Чтобы уточнить, мой объект правильно заполнен, когда я вхожу в метод, который использует NSPredicate, поэтому я знаю, что мои объекты не просто ноль.
Вот мой .h для моего класса участников.
@interface AKPsiMember : NSObject
#define CURRENT_STATUS @"Current"
#define ALUMNI_STATUS @"Alumni"
@property (nonatomic, strong) NSString *firstName;
@property (nonatomic, strong) NSString *lastName;
@property (nonatomic, strong) NSString *emailAddress;
@property (nonatomic, strong) NSString *pledgeClass;
@property (nonatomic, strong) NSString *major;
@property (nonatomic, strong) NSString *phoneNum;
А также мой TableViewController .й, который содержит делегат метода UISearchBar
- (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope
{
NSPredicate *resultPredicate = [NSPredicate
predicateWithFormat:@"SELF.firstName contains[c] %@",
searchText];
self.searchedMemberNameResults = [self.listedMembers filteredArrayUsingPredicate:resultPredicate];
}
и, наконец, ошибку с моей трассировки стека
'NSInvalidArgumentException', reason: '-[AKPsiMember isEqualToString:]: unrecognized selector sent to instance 0x716bbd0'
Вы пытались просто удалить SELF: '@" firstName содержит [c]% @ ", ...' –
На самом деле, похоже, что теперь он работает правильно из-за движения кости на моей стороне. Я искал проблему не в том месте. Но последующий вопрос на ваш вопрос, что именно делает объявление САМО? – bmjohns
Вы можете использовать SELF в предикатах примерно так: '[NSPredicate predicateWithFormat: @" SELF ==% @ ", AKPsiMemberObject];' –