0

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

我现在正在尝试在我填充了来自“成员”对象的名称的表格视图中使用 UISearchBar。但是,我无法使用 NSPredicate 从我创建的成员对象中检索名称属性,因为它崩溃了。我能够通过创建一个完全独立的数组来创建一个解决方法,其中只填充名称并将其与 NSPredicate 一起使用,但这远非理想,并且会在未来产生问题。

所以基本上通过这样做,我能够确定问题是我如何使用 NSPedicate 或者我如何在上一个类中设置我的成员对象。澄清一下,当我进入使用 NSPredicate 的方法时,我的对象已正确填充,所以我知道我的对象不只是 nil。

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

1 回答 1

0

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

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

于 2013-07-09T16:01:58.910 回答