Nie*_*bæk 3 xcode loops objective-c ios
假设我有三个mutablearrays:arr1,arr2和arr3.我想将arr1中的所有元素与arr2中的每个元素进行比较,如果arr2中的元素包含arr1中的所有元素,我想将其添加到arr3.所以我认为它看起来像我下面的代码.在目标c中是否有一些智能功能我不知道,或者任何方式都可以做到这一点?
for(int i; i < arr2.count; i++)
{
if([arr2 objectAtIndex:i] containAllElementsInArray:arr1]])
{
[arr3 addObject:[arr2 objectAtIndex:i]];
}
}
Run Code Online (Sandbox Code Playgroud)
查看数组是否包含另一个数组的所有元素的最佳方法是使用NSSets.NSSet将是不同对象的静态集合,这意味着当您从数组创建集合时,该集合将仅包含数组中每个disctint对象的1个条目.换句话说,一个数组可以有一个对象的多个副本,一个集合每个对象只有一个副本.
使用NSSet的重要部分是能够调用isSubsetOfSet方法:
isSubsetOfSet:返回一个布尔值,指示接收集中的每个对象是否也存在于另一个给定集中.
- (BOOL)isSubsetOfSet:(NSSet *)otherSet
Run Code Online (Sandbox Code Playgroud)
您需要从arr1创建一个集合并将其与arr2中的每个元素进行比较,以查看它是否是该元素的子集...
NSSet *arr1set = [NSSet setWithArray:arr1];
NSSet *arr2set = [NSSet setWithArray:[arr2 objectAtIndex:i]];
if ([arr1set isSubsetOfSet:arr2set]) {
// then the element [arr2 objectAtIndex:i] contains all the elements of arr1
[arr3 addObject:[arr2 objectAtIndex:i]];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3787 次 |
| 最近记录: |