0

我正在使用斯坦福大学UICoreDataTableViewController对数据库进行提取。

在我的主要观点中,用户在 searchBar 上输入一个浮点数,然后通过点击搜索,谓词使它只获取最大值和最小值之间的值(即 3 到 10 之间的浮点数)。

在主视图中,我构建了一个带有实体的字符串,一个带有必须执行搜索的属性的字符串,最后是一个带有谓词(大于 x 且小于 y)的数组。我将字符串和数组传递给prepareForSegue. 它工作得很好。

如果他/她没有输入任何数字,我希望用户能够看到所有的值。所以在prepareForSegue我添加了一个根据 NSLog 正确调用的条件。

问题是,在属性上,一些值只是零(我确定了这一点)。如果prepareForeSegue我通过以下谓词数组:

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

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

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

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

我真的不知道如何更进一步。任何帮助将非常感激。

谢谢。

4

1 回答 1

2

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

问题是谓词字符串的简单语法。与其使用 %@ 来指定属性,不如使用 %K。一切都在文档中进行了解释。

所以,谓词数组应该是:

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

现在作为一个魅力。

于 2012-06-18T20:13:56.883 回答