UICoreDataTableViewController

UICoreDataTableViewController

我正在使用Stanford的UICoreDataTableViewController在数据库上执行一次访存。

在我的主视图上,用户在searchBar上输入一个浮点数,然后点击search,谓词就完成了,因此它只能获取最大值和最小值之间的值(即3到10之间的浮点数)。

在主视图中,我使用实体构建字符串,使用必须在其中执行搜索的属性构建字符串,最后构建具有谓词(大于x且小于y)的数组。我在prepareForSegue上传递了字符串和数组。效果很好。

我希望用户如果不输入任何数字,就可以看到所有问号。因此,在prepareForSegue中,我添加了一个条件,根据NSLog可以正确调用该条件。

问题在于服装上的某些值仅为零(我确定了这一点)。如果为prepareForeSegue,则传递以下谓词数组:

prepredicateArrayToPass=[NSArray arrayWithObject:[NSPredicate predicateWithFormat:@"%@ !=nil", attributeToPass]];


提取完成后,将nil值解释为0,因此将被显示。不好。

但是,如果我复制谓词并将其直接粘贴到setupFetchedResultsControllerUICoreDataTableViewController方法上,则它可以完美工作并且不会显示nil值。

如果我直接在UICoredataTableViewController上添加条件,则它也不起作用。

我真的不知道该怎么做。任何帮助将非常感激。

谢谢。

最佳答案

因此,我在发布问题后的几分钟内找到了答案。

问题是谓词字符串的语法很简单。不应使用%@来指定礼节,而应使用%K。一切在documentation上说明。

因此,谓词数组应为:

prepredicateArrayToPass=[NSArray arrayWithObject:[NSPredicate predicateWithFormat:@"%K !=nil", attributeToPass]];


现在可作为魅力。

关于ios - NSPredicate没有响应,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11089968/

10-10 21:05