【问题标题】:UISearchBar, NSPredicate, w/ Array of ObjectsUISearchBar,NSPredicate,带对象数组
【发布时间】:2013-07-09 15:25:48
【问题描述】:

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

还有包含 UISearchBar 方法委托的 TableViewController .m

- (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'

【问题讨论】:

  • 您是否尝试过删除 SELF:@"firstName contains[c] %@", ...
  • 实际上,由于我的愚蠢举动,它现在似乎工作正常。我在错误的地方寻找问题。但是您的问题的后续问题,声明 SELF 究竟完成了什么?
  • 您可以在谓词中使用 SELF,如下所示:[NSPredicate predicateWithFormat:@"SELF == %@", AKPsiMemberObject];

标签: objective-c object uisearchbar nspredicate


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多