我有一系列城市和一系列国家。 这两个对象有一个共同的属性:城市名称。 我需要创建一个新数组,添加所有城市名称都没有在Cities数组中的国家。
我尝试在两个数组上进行迭代,比较城市名称并仅将新的数据添加到新数组中。结果是,当它检查第一个城市时,所有具有其他名称的城市都被添加到数组中,因此Cities数组中的其他城市也已经存在。
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];
}
}
}
建议?
答案 0 :(得分:4)
不确定我是否理解你想要的东西,我的猜测是你想做这样的事情:
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];
}
}