我有Java和Android开发经验,现在我正在尝试学习Objective-C和iPhone/iPad的开发。为了帮助自我教导,我正在将我为Android制作的应用程序重新写入iPhone。UISearchBar,NSPredicate,w /对象数组
我现在试图在我用“成员”对象填充名称的tableview中使用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;
而且还包含从我的堆栈跟踪的UISearchBar方法委托
- (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope
{
NSPredicate *resultPredicate = [NSPredicate
predicateWithFormat:@"SELF.firstName contains[c] %@",
searchText];
self.searchedMemberNameResults = [self.listedMembers filteredArrayUsingPredicate:resultPredicate];
}
最后的错误我TableViewController .M
'NSInvalidArgumentException', reason: '-[AKPsiMember isEqualToString:]: unrecognized selector sent to instance 0x716bbd0'
您是否尝试删除SELF: '@“firstName包含[c]%@”,...' –
实际上,由于我的骨头移动,它现在似乎正常工作。我在错误的地方寻找问题。但是对于你的问题的一个后续问题,说明SELF究竟做了什么? – bmjohns
你可以在谓词中使用SELF,例如: '[NSPredicate predicateWithFormat:@“SELF ==%@”,AKPsiMemberObject];' –