【发布时间】:2012-10-13 05:02:02
【问题描述】:
这是一个非常基本的问题,尽管我认为了解 NSPredicate 的基础知识,但我仍然对为什么在这里遇到错误感到有些困惑(searchText 是一个指向正在生成的 NSString 对象的指针)传递给方法)。
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF.name contains[cd] %@", searchText];
_searchResults = [_personArray filteredArrayUsingPredicate:predicate];
我有一个 NSMutableArray 的自定义对象(例如,Person 对象),它们有一个 name 属性。我要做的就是在用户开始在 UISearchBar 中输入时使用 NSPredicate 过滤潜在的匹配项。 IB 组件非常简单,并且看起来运行良好。但是,当我尝试搜索并开始过滤时,基本应用程序崩溃并出现以下错误:
'NSInvalidArgumentException', reason: '-[xPerson isEqualToString:]: unrecognized selector sent to instance 0x8043340'
我的理解是谓词将被传递给 NSMutableArray 中的每个对象,谓词中的 SELF 关键字指的是相应的对象(我相信,在这种情况下,它甚至不是真正必要的),并且.name 能够在自定义对象上使用综合属性。该错误似乎表明 -isEqualToString: 正在自定义对象而不是对象的属性上调用调用。
任何关于我做错了什么的建议将不胜感激。
【问题讨论】:
标签: objective-c ios nsmutablearray nspredicate