5

私は SQLite に取り組んでおり、ItemsArray と CustomersIDArray の 2 つの配列を次のように返すクエリを作成しました。

ItemsArray
Element at Index 0 = Off White,
Element at Index 1 = Fan,
Element at Index 2 = Off White,
Element at Index 3 = Delux,
Element at Index 4 = Fan

CustomerIDArray 
Element at Index 0 = 1,
Element at Index 1 = 2,
Element at Index 2 = 2,
Element at Index 3 = 3,
Element at Index 4 = 4

Off White = 2 (count) 、 Fan = 2 (count) 、 Delux = 1; のような結果が必要です。結果の配列、

Result Array 
Element at Index 0 = Off White,
Element at Index 1 = Fan,
Element at Index 2 = Delux

実際には、最初の配列で繰り返し回数が必要ですが、CustomerArray の値は同じであってはなりません。ロジックまたはコードを通じて私を助けてください。

4

3 に答える 3

3
-(NSMutableArray *)getCountAndRemoveMultiples:(NSMutableArray *)array{

    NSMutableArray *newArray = [[NSMutableArray alloc]initWithArray:(NSArray *)array];
    NSMutableArray *countArray = [NSMutableArray new];
    int countInt = 1;
    for (int i = 0; i < newArray.count; ++i) {
        NSString *string = [newArray objectAtIndex:i];
        for (int j = i+1; j < newArray.count; ++j) {
            if ([string isEqualToString:[newArray objectAtIndex:j]]) {
                [newArray removeObjectAtIndex:j];
                countInt++;
            }
        }
        [countArray addObject:[NSNumber numberWithInt:countInt]];
        countInt = 1;
    }
    NSMutableArray *finalArray = [[NSMutableArray alloc] initWithObjects:newArray, countArray, nil];
    NSLog(@"%@", finalArray);
    return finalArray;

}
- (IBAction)getArrayInfo:(id)sender {
    NSMutableArray *myArray = [[NSMutableArray alloc] initWithObjects:@"Off White", @"Fan", @"Off White", @"Deluxe", @"Fan", nil];
    NSMutableArray *godArray = [self getCountAndRemoveMultiples:myArray];
    NSLog(@"Array from this end = %@", godArray);
}

テストするために-getArrayInfoを設定しました。正常に動作します。ご覧のとおり、表示する配列はindex:0にあり、countArrayはindex:1にあります。

于 2012-04-23T19:06:21.600 に答える
2

NSCountedSet以下のように使用します

NSMutableArray *ary_res = [[NSMutableArray alloc] init];
    NSMutableArray *array = [[NSMutableArray alloc] initWithObjects:@"11",@"13",@"34",@"9",@"13",@"34",@"9",@"2",nil];
    NSCountedSet *set = [[NSCountedSet alloc] initWithArray:array];
    for(id name in set)
    {
        if([set countForObject:name]==2)
            [ary_res addObject:name];
    }
    //
    NSLog(@"%@",ary_res);
于 2012-04-23T12:58:34.093 に答える
0

これを試して:

NSArray *copy = [ItemsArray copy];

NSInteger index = [copy count] - 1;

for (id object in [copy reverseObjectEnumerator]) {

    if ([ItemsArray indexOfObject:object inRange:NSMakeRange(0, index)] != NSNotFound) {
        [ItemsArray removeObjectAtIndex:index];
    }
    index--;
}
于 2012-04-23T12:40:42.250 に答える