繁体   English   中英

NSOperationQueue操作filteredArrayUsingPredicate错误

[英]NSOperationQueue operations filteredArrayUsingPredicate error

我有MyOperation : NSOperationMyOperation : NSOperation @property (nonatomic, retain) NSString *oID;

有时我需要取消使用特定oID操作。 我正在尝试这样做:

NSArray *operations = operationQueue.operations;
NSPredicate *predicate = [NSPredicate predicateWithFormat:[NSString stringWithFormat: @"oID == %@", _specificID]];
NSArray *arrayOperations = [operations filteredArrayUsingPredicate: predicate];

并得到错误:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Unable to parse the format string "oID == 0f5db97b-f127-4425-ad79-451d1f204016"'

是否可以从NSOperationQueue过滤操作?

我猜想Operations.queue是一个可变数组(记录其类将返回此'__NSArrayM')。 您应该尝试的是:

NSArray *operations = [NSArray arrayWithArray:operationQueue.operations];

这就是说,某些操作可以完成(并从可变队列被移除)由谓词被施加给它的时间。

您的问题是您正在格式化字符串,然后将其发送到Predicate构造函数方法。 它已经是一个格式化程序,并且知道如何格式化您提供的数据。

基本上,您需要使用如下格式:

oID == "0f5db97b-f127-4425-ad79-451d1f204016"

但是你越来越

oID == 0f5db97b-f127-4425-ad79-451d1f204016

如果您单独使用格式化程序,则应该克服此问题。

NSPredicate *predicate = [NSPredicate predicateWithFormat: @"oID == %@", _specificID];

注意:谓词格式化程序知道它应该专门处理字符串,并在传递要由%@ '格式化的字符串时自动添加多余的引号字符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM