我有Java和Android开发经验,现在正在尝试学习Objective-C和iPhone / iPad开发。为了帮助自学,我正在将我为Android制作的应用程序重新编写到iPhone上。
我现在正试图在tableview中使用UISearchBar,我用“member”对象填充了名称。但是,我无法使用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 .m包含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'
答案 0 :(得分:0)
我觉得很傻。我的问题实际上是将我的cell.textLabel.text =设置为成员对象而不是对象中的字符串。显然,我是在不久前第一次实施UISearchBar并且从未注意到时做过这种改变。
我的谓词现在实际上正常工作!感谢所有花时间帮助我的人。