我有一个NSMutableArray,我想针对多个“Win”案例进行测试。 意思是,我想针对NSMutableArray测试每个3个整数C数组,并查看在C数组中找到的int是否在NSMutablearray中找到
这些是我的C数组:
// horizontal
int winCaseHorizontal1[3] = {9, 1, 2};
int winCaseHorizontal2[3] = {3, 4, 5};
int winCaseHorizontal3[3] = {6, 7, 8};
// verticle
int winCaseVerticle1[3] = {9, 3, 6};
int winCaseVerticle2[3] = {1, 4, 7};
int winCaseVerticle3[3] = {2, 5, 8};
// diaganol
int winCaseDiagonal1[3] = {9, 4, 8};
int winCaseDiagonal2[3] = {2, 4, 6};
我想测试数组winCaseHorizontal1中的数字,看看我的NSMutableArray中是否找到了这些数字。
我读过关于测试两个NSMutableArrays是否相等的测试,但这是完全不同的。 一;这是将c数组与NSMutable进行比较, 二;我不在乎它们是否相等,我只是想看看是否在NSMutable中找到了c数组int。
提前感谢您的帮助!
答案 0 :(得分:1)
您可以遍历数组并查找NSMutableArray
中是否存在元素。
-(BOOL)elementFound{
for(NSNumber *number in mutableArray)
{
for(int i = 0; i < sizeof(winCaseHorizontal1) / sizeof(int); i++)
{
if([number integerValue] == winCaseHorizontal1[i]){
return YES;
}
}
for(int i = 0; i < sizeof(winCaseHorizontal2) / sizeof(int); i++)
{
if([number integerValue] == winCaseHorizontal2[i]){
return YES;
}
}
for(int i = 0; i < sizeof(winCaseHorizontal3) / sizeof(int); i++)
{
if([number integerValue] == winCaseHorizontal3[i]){
return YES;
}
}
//other arrays
}
return NO;
}
如果你想要在你的c数组中找到的索引或元素,你可以创建另一个数组,并在该数组中添加一个或多个元素,并在函数结束时返回它。
编辑:正如BryanChen建议更快的方法是从c数组中生成和NSSet
并检查mutableArray元素是否存在。
NSMutableSet *winCaseHorizontalSet1 = [[NSMutableSet alloc] init];
for(int i = 0; i < sizeof(winCaseHorizontal1) / sizeof(int); i++)
{
[winCaseHorizontalSet1 addObject:@(winCaseHorizontal1[i])];
}
for(NSNumber *number in mutableArray)
{
BOOL isContain = [winCaseHorizontalSet1 containsObject:number];
if(isContain) return YES;
//other set of c arrays
}