数组中的对象数组通过测试

发布于 2024-10-29 18:06:56 字数 261 浏览 2 评论 0原文

我有一个 NSArray 对象,它有一个属性 id 。

然后我有另一个带有选择的 id 的 NSArray。

我需要获取第一个数组中具有第二个数组中列出的 id 的所有对象。

是否可以在没有 for 循环的情况下执行此操作(1 个 for 循环可以,但我想避免它)。我知道如何用 2 个 for 循环来做到这一点,但这似乎效率很低。所以基本上我正在寻找最有效的方法。

(顺便说一句,Id 是一个 NSURL,所以它不能是任何特定于整数的东西)

I have an NSArray of objects, which have a property id.

I then have another NSArray with a selection of ids.

I need to get all the objects in the first array which have the ids listed in the second array.

Is it possible to do this without for loops (well 1 for loop is ok, but I'd like to avoid it). I know how to do this with 2 for loops, but this seems very inefficient. So basically I'm looking for the most efficient way.

(The Id is an NSURL btw, so it can't be anything integer specific)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

掩耳倾听 2024-11-05 18:07:05

没有循环!

NSArray *arrayOfIdentifiers = ...;
NSArray *arrayOfObjects = ...;
NSPredicate *filter = [NSPredicate predicateWithFormat:@"id IN %@", arrayOfIdentifier];
NSArray *filteredObjects = [arrayOfObjects filteredArrayUsingPredicate:filter];

好吧,您没有编写循环。 filteredArrayUsingPredicate: 内可能存在循环。

No loops!

NSArray *arrayOfIdentifiers = ...;
NSArray *arrayOfObjects = ...;
NSPredicate *filter = [NSPredicate predicateWithFormat:@"id IN %@", arrayOfIdentifier];
NSArray *filteredObjects = [arrayOfObjects filteredArrayUsingPredicate:filter];

Well, no loops that you write. There are probably loops inside filteredArrayUsingPredicate:.

风吹雪碎 2024-11-05 18:07:05

你需要一个交集 os 集。

NSMutableSet *set1=[[[NSMutableSet alloc] initWithArray:array1] autorelease];
NSMutableSet *set2=[[NSMutableSet alloc] initWithArray:array2];
[set1 intersectSet:set2];
[set2 release];
NSArray *newArray=[set1 allObjects];

You need an intersection os sets.

NSMutableSet *set1=[[[NSMutableSet alloc] initWithArray:array1] autorelease];
NSMutableSet *set2=[[NSMutableSet alloc] initWithArray:array2];
[set1 intersectSet:set2];
[set2 release];
NSArray *newArray=[set1 allObjects];
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文