gpt4 book ai didi

objective-c - 使用 NSPredicate 检测 NOT CONTAINS

转载 作者:可可西里 更新时间:2023-11-01 04:21:36 27 4
gpt4 key购买 nike

我放弃了。我已经尝试了所有我能想到的组合来检查一个字符串是否包含另一个字符串。下面是描述我想做的事情的直观语法示例:

    NSPredicate* pPredicate = [NSPredicate predicateWithFormat:@"NOT (%K CONTAINS[c] %@)",
NSMetadataItemFSNameKey,
[NSString stringWithFormat:@"Some String"]];

无论我如何移动 NOT,请使用 !运算符代替,移动括号或完全删除它们,我总是在解析此表达式时遇到异常。

这个表达式有什么问题?

编辑:异常发生在我调用

[pMetadataQuery setPredicate:pPredicate];

异常(exception)情况是:* 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“未知类型的 NSComparisonPredicate 提供给 NSMetadataQuery(kMDItemFSName CONTAINS[c]“某些字符串”)”

最佳答案

我取得了圆满成功:

NSPredicate* predicate = [NSPredicate predicateWithFormat:@"NOT (%K CONTAINS[c] %@)",
@"someKey",
[NSString stringWithFormat:@"Some String"]];
NSArray *testArray =
[NSArray arrayWithObjects:
[NSDictionary dictionaryWithObject:@"This sure is Some String" forKey:@"someKey"],
[NSDictionary dictionaryWithObject:@"I've nothing to say" forKey:@"someKey"],
[NSDictionary dictionaryWithObject:@"I don't even have that key" forKey:@"someOtherKey"],
nil];

NSArray *filteredArray = [testArray filteredArrayUsingPredicate:predicate];
NSLog(@"found %@", filteredArray);

在 OS X v10.7 和 iOS v4.3 下,testArray 中的三个对象中的第二个两个对象在 filteredArray 中结束。所以问题不在于谓词——使它在技术上成为问题的完整答案——它是 NSMetadataQuery 中的某种限制。遗憾的是,我在该领域没有经验,但这肯定是下一步要研究的事情。

关于objective-c - 使用 NSPredicate 检测 NOT CONTAINS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11476466/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com