我正在使用Stanford的UICoreDataTableViewController
在数据库上执行一次访存。
在我的主视图上,用户在searchBar上输入一个浮点数,然后点击search,谓词就完成了,因此它只能获取最大值和最小值之间的值(即3到10之间的浮点数)。
在主视图中,我使用实体构建字符串,使用必须在其中执行搜索的属性构建字符串,最后构建具有谓词(大于x且小于y)的数组。我在prepareForSegue
上传递了字符串和数组。效果很好。
我希望用户如果不输入任何数字,就可以看到所有问号。因此,在prepareForSegue
中,我添加了一个条件,根据NSLog可以正确调用该条件。
问题在于服装上的某些值仅为零(我确定了这一点)。如果为prepareForeSegue
,则传递以下谓词数组:
prepredicateArrayToPass=[NSArray arrayWithObject:[NSPredicate predicateWithFormat:@"%@ !=nil", attributeToPass]];
提取完成后,将nil值解释为0,因此将被显示。不好。
但是,如果我复制谓词并将其直接粘贴到
setupFetchedResultsController
的UICoreDataTableViewController
方法上,则它可以完美工作并且不会显示nil值。如果我直接在
UICoredataTableViewController
上添加条件,则它也不起作用。我真的不知道该怎么做。任何帮助将非常感激。
谢谢。
最佳答案
因此,我在发布问题后的几分钟内找到了答案。
问题是谓词字符串的语法很简单。不应使用%@来指定礼节,而应使用%K。一切在documentation上说明。
因此,谓词数组应为:
prepredicateArrayToPass=[NSArray arrayWithObject:[NSPredicate predicateWithFormat:@"%K !=nil", attributeToPass]];
现在可作为魅力。
关于ios - NSPredicate没有响应,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11089968/