合并两个NSArray删除重复项



我有一个城市数组和一个国家数组。这两个对象有一个共同的特性:城市名称。我需要创建一个新的数组,添加城市数组中没有城市名称的所有国家。

我尝试对这两个数组进行迭代,比较城市名称,然后只将不同的名称添加到新数组中。结果是,当它检查第一个城市时,所有具有其他名称的城市都会添加到阵列中,因此"城市"阵列中的其他城市也已经存在。

self.filteredCountriesArray = [NSMutableArray new];
for (Country* country in self.countries) {
    for (City *city in self.cities) {
        if (![country.city isEqualToString:city.name]) {
            [self.filteredCountriesArray addObject:country];
        }
    }
}

建议?

不确定我是否理解你想要什么,我的猜测是你想做这样的事情:

for (Country *country in self.countries) {
    BOOL found = NO;
    for (City *city in self.cities) {
        if ([country.city isEqualToString:city.name]) {
            found = YES;
            break;
        }
    }
    if (!found) {
        [self.filteredCountriesArray addObject:country];
    }
}

为了加快速度,我首先创建了一个城市名称为的NSSet

NSMutableSet *cityNames = [NSMutableSet set];
for (City *city in self.cities) {
    [cityNames addObject:city.name];
}
for (Country *country in self.countries) {
    if (![cityNames containsObject:county.city]) {
        [self.filteredCountriesArray addObject:country];
    }
}

最新更新