gpt4 book ai didi

objective-c - 在 Objective-C 数组中获取特定类型的所有对象的优雅方法

转载 作者:搜寻专家 更新时间:2023-10-30 20:12:54 25 4
gpt4 key购买 nike

我知道我能做到

for (id obj in array)
{
if ([obj isKindOfClass:[Elephant class]])
[elephants addObject:obj];
}

但我觉得一定有更优雅的方式来做到这一点。我看过过滤数组,但想不出一个好的谓词。想法?

最佳答案

谓词类似于

Class ec = [Elephant class];
NSPredicate *elePred = [NSPredicate predicateWithFormat:@"class==%@", ec];
NSArray *elephants = [array filteredArrayUsingPredicate:elePred];

NSPredicate *elePred = [NSPredicate predicateWithFormat:@"self isKindOfClass: %@", ec];

我发现谓词相当,呃.. 我们应该说“重”吗?我可能更喜欢你的代码而不是这个。

如果您只是想为您的生活增添一点情趣,您可以使用 block 来增加一点并发性……

    NSMutableArray *results = [NSMutableArray array];
[array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop){
if([obj isKindOfClass:[Elephant class]])
[results addObject:obj];
}];

关于objective-c - 在 Objective-C 数组中获取特定类型的所有对象的优雅方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2699135/

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