1

我有一个 int 类型的类成员“total”。我在谓词中使用“总计”作为属性:

[NSPredicate predicateWithFormat: @"total ==%i", [searchText intValue]];

此谓词用于在执行搜索时收集匹配项。谓词将存储在 iVarsearchText中的 text 类型的用户搜索值与 int 类型的属性“total”进行比较。

我可以像这样轻松地检查是否相等:

 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];

如果不在我的班级中创建字符串类型,我怎么能做到这一点?

谢谢!

4

2 回答 2

1

[NSString stringWithFormat:@"%d"]是如何将整数从整数转换为字符串。您可以将它与您的谓词声明内联。

至于怎么做

不创建字符串类型

我很困惑如何在不创建字符串的情况下将某些内容用作字符串。

您的谓词应如下所示:

NSPredicate *predicate = [NSPredicate predicateWithFormat:
                          @"(content BEGINSWITH[c] %@)", [NSString stringWithFormat:@"%d",total]];
于 2012-07-27T16:38:26.367 回答
0

您可以这样做的一种(有点粗略)方法是生成一个谓词,例如:

total == %d OR total / 10 == %d OR total / 100 == %d OR total / 1000 == %d...

假设您知道总计可能有一个小的最大值。

于 2012-07-27T20:20:44.737 回答