我有一个城市数组和一个国家数组。这两个对象有一个共同的特性:城市名称。我需要创建一个新的数组,添加城市数组中没有城市名称的所有国家。
我尝试对这两个数组进行迭代,比较城市名称,然后只将不同的名称添加到新数组中。结果是,当它检查第一个城市时,所有具有其他名称的城市都会添加到阵列中,因此"城市"阵列中的其他城市也已经存在。
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];
}
}