【问题标题】:Matching NSPredicate With String将 NSPredicate 与字符串匹配
【发布时间】:2011-08-14 04:28:44
【问题描述】:

我有一个效果不错的谓词。

NSPredicate *filter = [NSPredicate predicateWithFormat:@"code contains[cd] %@", predicateFilter];

所以如果 predicateFilter 是 112,这将找到所有包含 112code。我希望它找到所有以112 开头的代码。

编辑:

我有这个谓词,我怎样才能使它的代码介于以 predicateFilterStart 开头的代码和以 PredicateFilterEnd 开头的代码之间?

NSPredicate *filterPredicate = [NSPredicate predicateWithFormat:@"ANY code BETWEEN %@",
                     [NSArray arrayWithObjects: 
                      [NSExpression expressionForConstantValue: [NSNumber numberWithFloat: [self.predicateFilterStart floatValue]]],
                      [NSExpression expressionForConstantValue: [NSNumber numberWithFloat: [self.predicateFilterEnd floatValue]]],
                      nil]];

【问题讨论】:

    标签: iphone objective-c nsstring nspredicate


    【解决方案1】:
    NSPredicate *filter = [NSPredicate predicateWithFormat:@"code beginswith[cd] %@", predicateFilter];
    

    Predicate Programming Guide

    【讨论】:

    • 谢谢,但这并不是我想要的。我想找到适合predicateFilter(例如20)和predicateFilterEnd(例如30)的代码之间的代码。所以以20和30开头的代码之间的代码,所以任何代码如25.5等
    • 那个谓词NSLogs到code BEGINSWITH[cd] "18" AND code ENDSWITH[cd] "20",我想要的是code BETWEEN (code BEGINSWITH[cd] "18" AND code BEGINSWITH[cd] "20")之类的东西。
    • 看看你有一个过滤器,然后你想用那个过滤器的结果进行过滤。所以基本上你必须运行第一个谓词(原始问题)两次才能获得你的值(希望只有两个),否则添加一些逻辑来选择两个,然后运行你添加到问题中的第二个谓词。
    猜你喜欢
    • 1970-01-01
    • 2019-07-25
    • 2011-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-25
    • 2019-07-18
    • 1970-01-01
    相关资源
    最近更新 更多