Objective c 在NSPredicate中使用强制类型转换

Objective c 在NSPredicate中使用强制类型转换,objective-c,ios5,nspredicate,Objective C,Ios5,Nspredicate,我有一个int类型的类成员“total”。我在谓词中使用“total”作为属性: [NSPredicate predicateWithFormat: @"total ==%i", [searchText intValue]]; 此谓词用于在执行搜索时收集匹配项。谓词将存储在iVarsearchText中的文本类型的用户搜索值与int类型的属性“total”进行比较 我可以像这样轻松地检查平等性: NSPredicate *filter = [NSPredicate predicateWith

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

[NSPredicate predicateWithFormat: @"total ==%i", [searchText intValue]];
此谓词用于在执行搜索时收集匹配项。谓词将存储在iVar
searchText
中的文本类型的用户搜索值与int类型的属性“total”进行比较

我可以像这样轻松地检查平等性:

 NSPredicate *filter = [NSPredicate predicateWithFormat: @"total ==%i", [searchText  intValue]];
NSPredicate *predicate = [NSPredicate predicateWithFormat:
                          @"(content BEGINSWITH[c] %@)", [NSString stringWithFormat:@"%d",total]];
我现在想让谓词更健壮,像文本搜索一样工作,因此如果用户在搜索框中键入“5”,谓词将返回5,52550,以此类推

换句话说,我想将“total”(一个属性)视为谓词过滤器中的字符串,以便使用BEGINSWITH或CONTAINS

我的问题是属性“total”的类型是int,而不是字符串,所以我被卡住了

以下是我的意图(伪代码)

如果不在类中创建字符串类型,如何执行此操作


谢谢

[NSString stringWithFormat:@“%d”]
是将整数转换为字符串的方法。您可以将其与谓词声明内联

至于怎么做呢

不创建字符串类型

我很困惑,在不创建字符串的情况下,如何将某个东西用作字符串

您的谓词应该如下所示:

 NSPredicate *filter = [NSPredicate predicateWithFormat: @"total ==%i", [searchText  intValue]];
NSPredicate *predicate = [NSPredicate predicateWithFormat:
                          @"(content BEGINSWITH[c] %@)", [NSString stringWithFormat:@"%d",total]];

[NSString stringWithFormat:@“%d”]
是将整数转换为字符串的方法。您可以将其与谓词声明内联

至于怎么做呢

不创建字符串类型

我很困惑,在不创建字符串的情况下,如何将某个东西用作字符串

您的谓词应该如下所示:

 NSPredicate *filter = [NSPredicate predicateWithFormat: @"total ==%i", [searchText  intValue]];
NSPredicate *predicate = [NSPredicate predicateWithFormat:
                          @"(content BEGINSWITH[c] %@)", [NSString stringWithFormat:@"%d",total]];
一种(有点粗俗的)方法是生成一个谓词,如:

total == %d OR total / 10 == %d OR total / 100 == %d OR total / 1000 == %d...
假设您知道一个较小的最大值total可以有。

一种(有点粗略)的方法是生成一个谓词,如:

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

假设你知道一个很小的最大值总和。

我遗漏了什么?这会导致分析错误:NSPredicate*筛选器=[NSPredicate predicateWithFormat:@“[NSString stringWithFormat:@\%f\,total]BEGINSWITH%@”,searchText];非常感谢,Dustin但是“total”没有明确的可赋值值,所以我不能使用格式说明符。“total”是要在谓词条件中使用的类成员的名称。需要更改此设置,以便将“total”视为字符串:NSPredicate*筛选器=[NSPredicate predicateWithFormat:@“total=%i”,[searchText intValue];你需要在你的问题中添加一些细节;这个
searchText
变量是什么?为什么要使用它的int值?如果要检查是否相等,也应该使用
=
。Dustin,我编辑了我的问题并添加了更多详细信息。根据谓词编程指南,“==”和“=”是可互换的。在比较数字是否相等时,两个运算符都返回准确的结果。我同意==是一个更好的选择,但我遗漏了什么?这会导致分析错误:NSPredicate*筛选器=[NSPredicate predicateWithFormat:@“[NSString stringWithFormat:@\%f\,total]BEGINSWITH%@”,searchText];非常感谢,Dustin但是“total”没有明确的可赋值值,所以我不能使用格式说明符。“total”是要在谓词条件中使用的类成员的名称。需要更改此设置,以便将“total”视为字符串:NSPredicate*筛选器=[NSPredicate predicateWithFormat:@“total=%i”,[searchText intValue];你需要在你的问题中添加一些细节;这个
searchText
变量是什么?为什么要使用它的int值?如果要检查是否相等,也应该使用
=
。Dustin,我编辑了我的问题并添加了更多详细信息。根据谓词编程指南,“==”和“=”是可互换的。在比较数字是否相等时,两个运算符都返回准确的结果。不过,我确实同意==是一个更好的选择