我有两个数组:
符号 - 较小的数组 fetchedSymbolsArray - 更大的数组
如何检查符号中的内容是否也在fetchedSymbolsArray中?
让我们假设
symbols = ["AAPL", "GOOG", "YHOO"];
fetchedSymbolsArray = ["AAPL", "GOOG", "YHOO", "MSFT"];
我想查看是否有重复项,然后将fetchedSymbolsArray中的任何其他元素添加回符号中。在这种情况下,将添加MSFT。
答案 0 :(得分:0)
您可以使用NSArray
方法
- (NSUInteger)indexOfObject:(id)anObject
测试数组是否具有某个对象。如果不是,则返回结果为NSNotFound
。这是检查一个数组是否是另一个数组的子集的简单方法:
NSUInteger index;
for (int i=0; i<[symbols count]; ++i) {
index = [fetchedSymbolsArray indexOfObject:[symbols objectAtIndex:i]];
if (index == NSNotFound) {
return NO;
}
}
return YES;
当然,这可以使用快速枚举或其他技巧来改进,具体取决于数组中的对象,它们是否已排序等。
答案 1 :(得分:0)
for (int i = 0; i<[symbols count]; i++) {
id myObj = [symbols objectAtIndex:i]; // I set id because type is unknown
if ([fetchedSymbolsArray indexOfObject:myObj] != NSNotFound) {
NSLog(@"Object %@ found in fetched symbols", myObj);
}
}
答案 2 :(得分:0)
试试这个。
BOOL contentIsInLargerArray = NO;
for (id *object in symbols) {
if ([fetchedSymbolsArray containsObject:object])
contentIsInLargerArray = YES;
}
return contentIsInLargerArray;
这使用 - (BOOL)containsObject:(id)anObject而不是 - [indexObObject:]。