objective-c – NSPredicate中的多个条件

objective-c – NSPredicate中的多个条件,第1张

概述如何使用多个条件与NSPredicate? 我正在使用这个,但没有得到任何返回的数组. NSPredicate *placePredicate = [NSPredicate predicateWithFormat:@"place CONTAINS[cd] %@ AND category CONTAINS[cd] %@ AND ((dates >= %@) AND (dates <= %@)) AN 如何使用多个条件与nspredicate?

我正在使用这个,但没有得到任何返回的数组.

nspredicate *placePredicate = [nspredicate predicateWithFormat:@"place CONTAINS[cd] %@ AND category CONTAINS[cd] %@ AND ((dates >= %@) AND (dates <= %@)) AND ((amount >= %f) AND (amount <= %f))",placeTextFIEld.text,selectedcategory,selectedFromDate,selectedToDate,[amountFromTextFIEld.text floatValue],[amountToTextFIEld.text floatValue]];NSArray *placePredicateArray = [dataArray filteredArrayUsingPredicate:placePredicate];NSLog(@"placePredicateArray %@",placePredicateArray);

有时,数量和类别可能是空的.我应该如何构建nspredicate?

解决方法 我会倾向于处理这一个零碎.那是,

placePredicate = [nspredicate predicateWithFormat:@"place CONTAINS[cd] %@",placeTextFIEld.text];NSMutableArray *compoundPredicateArray = [ NSMutableArray arrayWithObject: placePredicate ]; if( selectedcategory != nil ) // or however you need to test for an empty category    {    categoryPredicate = [nspredicate predicateWithFormat:@"category CONTAINS[cd] %@",selectedcategory];    [ compoundPredicateArray addobject: categoryPredicate ];    }// and similarly for the other elements.

注意,当我知道没有一个时,我甚至不打扰到数组的类别(或任何其他)的谓词.

// Then    nspredicate *predicate = [NSCompoundPredicate andPredicateWithSubpredicates:                                  compoundPredicateArray ];

如果我打算做很多,我不会使用格式化方法,而是围绕构建块,只需更改使用之间的任何更改.

总结

以上是内存溢出为你收集整理的objective-c – NSPredicate中的多个条件全部内容,希望文章能够帮你解决objective-c – NSPredicate中的多个条件所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1085262.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存