UISearchBar,NSPredcate,w/对象数组



我有Java和Android开发的经验,现在正试图学习Objective-C和iPhone/iPad的开发。为了帮助自学,我正在重新编写一个我为android制作的应用程序到iPhone。

我现在正试图在一个表视图中使用UISearchBar,我已经用"成员"对象的名称填充了这个表视图。但是,我在使用NSPredcate从我创建的成员对象内部检索名称属性时遇到了问题,因为它崩溃了。我能够通过制作一个完全独立的数组来创建一个解决方案,只填充名称,并将其用于NSPredcate,但这远非理想,还会带来问题。

因此,通过这样做,我基本上能够将问题定位为我如何使用NSPedicate,或者我如何在上一个类中设置我的成员对象。为了澄清,当我进入使用NSPredcate的方法时,我的对象被正确填充了,所以我知道我的对象不仅仅是零。

这是我给会员班的.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'

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

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

最新更新