【发布时间】:2012-07-27 15:19:46
【问题描述】:
我有一个 int 类型的类成员“total”。我在谓词中使用“总计”作为属性:
[NSPredicate predicateWithFormat: @"total ==%i", [searchText intValue]];
此谓词用于在执行搜索时收集匹配项。谓词比较用户的搜索值,存储在 iVar searchText 中,类型为 text 和属性“total”,类型为 int。
我可以像这样轻松检查是否相等:
NSPredicate *filter = [NSPredicate predicateWithFormat: @"total ==%i", [searchText intValue]];
我现在想让谓词更健壮,像文本搜索一样工作,所以如果用户在搜索框中输入“5”,谓词将返回 5,52,550 等。
换句话说,我想在我的谓词过滤器中将“total”(一个属性)视为一个字符串,这样我就可以使用 BEGINSWITH 或 CONTAINS。
我的问题是属性“total”的类型是 int,而不是字符串,所以我被卡住了。
这是我的意图(伪代码)
NSPredicate *filter = [NSPredicate predicateWithFormat: @"[total stringValue] BEGINSWITH %@", searchText];
或者
NSPredicate *filter = [NSPredicate predicateWithFormat: @"CAST(total, 'NSString' ) BEGINSWITH %@", searchText];
如何在我的类中不创建字符串类型来做到这一点?
谢谢!
【问题讨论】:
标签: objective-c ios5 nspredicate