-1

例:NSMutable*Array1には1,2が含まれています。NSMutable*Array2には2,1が含まれています。

これら2つの配列を比較すると、上記の条件はTrueを返すはずです。これを行うのを手伝ってください。ありがとうございます。

4

4 に答える 4

1

まず、両方の配列をこのように昇順で並べ替えます

NSSortDescriptor* sortOrder = [NSSortDescriptor sortDescriptorWithKey: @"self" ascending: YES];
[array1 sortUsingDescriptors:[NSArray arrayWithObject: sortOrder]];
[array2 sortUsingDescriptors:[NSArray arrayWithObject: sortOrder]];

そして、単純にアレイを次のように比較します

return ([array1 isEqualToArray:array2]);
于 2013-01-02T13:33:00.647 に答える
1

次のように書くことができます。

BOOL areEqual = array1.count == array2.count;
if (areEqual) {
  NSMutableArray *array3 = [NSMutableArray arrayWithArray:array2];
  for (NSNumber *number in array1) {
    [array3 removeObject:number];
  }
  if (array3.count > 0) {
    areEqual = NO;
  }
}
于 2013-01-02T13:28:23.257 に答える
0

これを試してください:

ここでは BOOL を返し、1 (はい)、0 (いいえ) として出力しています。True と False を返したい場合は、comparyArray:withArray: メソッドの if-else で再実行します。

- (BOOL)compareArray:(NSArray *)first withArray:(NSArray *)second{
    first=[first sortedArrayUsingSelector:@selector(compare:)];
    second=[second sortedArrayUsingSelector:@selector(compare:)];
    return [first isEqualToArray:second];
}

- (void)anyMethod{
    NSArray *arr1=@[@1,@2,@3];
    NSArray *arr2=@[@3,@1,@21];        
    NSLog(@"Compare result is %d",[self compareArray:arr1 withArray:arr2]);
}
于 2013-01-02T13:36:35.553 に答える
0

NSArray重複が ( >によって)削除されたと仮定できる場合NSSet、配列は次のように比較できます。

BOOL equal = [[NSSet setWithArray:array1] isEqualToSet:[NSSet setWithArray:array2]];

配列のサイズも考慮してください。

于 2013-01-02T13:47:15.703 に答える