gpt4 book ai didi

cocoa - 使用 NSSet 过滤 NSArray 时使用 NONE 时出现问题

转载 作者:行者123 更新时间:2023-12-03 17:35:15 24 4
gpt4 key购买 nike

我试图通过排除 NSSet 中的元素来过滤 NSArray。我正在做这样的事情:

    NSMutableArray* a = [NSMutableArray arrayWithObjects:@"1", @"2", @"3", nil];
NSSet* set = [NSSet setWithObjects:@"2", nil];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"NONE SELF IN %@", set];
NSArray* b = [a filteredArrayUsingPredicate:predicate];

但是,此代码会引发异常:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'The left hand side for an ALL or ANY operator must be either an NSArray or an NSSet

我做错了什么?

最佳答案

您应该在谓词中使用 NOT 而不是 NONE:

[NSPredicate predicateWithFormat:@"NOT SELF IN %@", set]

这是因为谓词应用于数组中的每个对象(SELF),即NSString。相反,None 应该应用于 NSSetNSArray

如果您坚持使用NONE。您可以将 a 更改为

NSMutableArray* a = [NSMutableArray arrayWithObjects:@[@"1"], @[@"2"], @[@"3"], nil];

这样SELF就变成了NSArray

关于cocoa - 使用 NSSet 过滤 NSArray 时使用 NONE 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12985666/

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