UISearchBar,NSPredicate,带有对象数组

时间:2013-07-09 15:25:48

标签: objective-c object uisearchbar nspredicate

我有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'

1 个答案:

答案 0 :(得分:0)

我觉得很傻。我的问题实际上是将我的cell.textLabel.text =设置为成员对象而不是对象中的字符串。显然,我是在不久前第一次实施UISearchBar并且从未注意到时做过这种改变。

我的谓词现在实际上正常工作!感谢所有花时间帮助我的人。