NSMutableArray содержит вопрос объекта - PullRequest
0 голосов
/ 03 ноября 2010

Я пытаюсь сравнить два массива, скажем, массив a представляет собой серию массивов примерно так:

((1,1), (1,2), (1,3), (1,4), (2,1), (2,2), (2,3), (3,1), (3,2), (3,3)) 

, а массив b - это серия массивов, например:

((1,1), (1,2), (1,3), (1,4), (2,1), (2,2), (2,3))

Как проверить, находится ли элемент из массива a в массиве b

for(NSString* itemFromA in a) {
 if ([b containsObject: itemFromA] == FALSE) { 
   NSLog(@"ok");
   break;
 }
}

это, похоже, не работает для меня.

Ответы [ 2 ]

0 голосов
/ 05 ноября 2010

Я решил это, хотя не стесняйтесь убирать это.

@ реализация AppController - (IBAction) GetArrayData: (id) отправитель {

int a=10;
int b=10;
int c=20;
int d=20;
int row=0;
int col=0;

NSMutableArray* e = [[NSMutableArray alloc] init];
NSMutableArray* f = [[NSMutableArray alloc] init];

for(row=0; row<a; row++) {
    for(col=0; col<b; col++) {
        NSNumber* thisrow = [NSNumber numberWithInt:row];
        NSNumber* thiscol = [NSNumber numberWithInt:col];
        [e addObject:[NSArray arrayWithObjects:thisrow, thiscol, nil]];
    }
}

for(row=0; row<c; row++) {
    for(col=0; col<d; col++) {
        NSNumber* thisrow = [NSNumber numberWithInt:row];
        NSNumber* thiscol = [NSNumber numberWithInt:col];
        [f addObject:[NSArray arrayWithObjects:thisrow, thiscol, nil]];

    }
}

//check to see if f contains items from e
for(NSString* thisset in f) {
    if ([e containsObject: thisset]) {
        NSLog(@"This set (%@) is already being used.", thisset);
    } else {
        NSLog(@"We can start the ad at these coordinates: %@", thisset);
        break;
    }
}

[e release];[F релиз];} @ end

0 голосов
/ 03 ноября 2010

Я не уверен, что тип итератора правильный;Похоже, b и a являются массивами массивов, но вы используете NSString* в качестве типа итератора.Я не одарён внутренними объектами Objective-C, но я верю, что это приведет к сбою проверки (так как itemFromA будет иметь тип NSString*, а вы перебираете коллекцию NSArray* с.)

Кроме того, containsObject: может делать не то, что вам нужно, а именно то, что для сравнения используется isEqual.В документации упоминается, что isEqual специализируется на NSArray, но я не смог найти подробности относительно этой специализации.Я не знаю, как containsObject: будет действовать в таких «глубоких» операциях сравнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...