首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >NSPredicate evaluateWithObject:?有什么东西吗?

NSPredicate evaluateWithObject:?有什么东西吗?
EN

Stack Overflow用户
提问于 2015-11-23 06:26:56
回答 1查看 356关注 0票数 0

有没有人知道有什么文档可以解释您可以传递给evaluateWithObject:(id)object的确切内容?

因为它需要一个id,所以我认为这意味着我可以传递任何东西给它。

但是,如果是这样的话,您将如何区分由于一个对象而导致的失败--它无法确定如何验证和失败--一个成功应用的评估失败。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-23 06:33:19

任何对象都可以根据任何谓词进行验证,除非对象不能与正在使用的操作符一起工作。如果发生这种情况,您将得到一个运行时异常,因此您将知道您做错了什么。

示例

代码语言:javascript
复制
@import Foundation;
#import <objc/runtime.h>

int main(int argc, char **argv)
{
    NSPredicate *p = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", @"moo"];

    NSLog(@"%hhd", [p evaluateWithObject:@"moo"]);
    NSLog(@"%hhd", [p evaluateWithObject:@[]]);

    return 0;
}

用:clang -framework Foundation -fobjc-arc -fmodules test.m编译

运行as:./a.out

输出:

代码语言:javascript
复制
2015-11-23 08:35:42.927 a.out[91256:5691654] 1
2015-11-23 08:35:42.930 a.out[91256:5691654] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Can't do regex matching on object (
).'
*** First throw call stack:
(
    0   CoreFoundation                      0x00007fff88e8ee32 __exceptionPreprocess + 178
    1   libobjc.A.dylib                     0x00007fff872284fa objc_exception_throw + 48
    2   Foundation                          0x00007fff8e2ac62f -[NSMatchingPredicateOperator performPrimitiveOperationUsingObject:andObject:] + 498
    3   Foundation                          0x00007fff8e212dd7 -[NSPredicateOperator performOperationUsingObject:andObject:] + 286
    4   Foundation                          0x00007fff8e212b8d -[NSComparisonPredicate evaluateWithObject:substitutionVariables:] + 313
    5   a.out                               0x0000000101a8decf main + 159
    6   libdyld.dylib                       0x00007fff86c4c5ad start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
[1]    91256 abort      ./a.out
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33864853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档