我有以下代码填充数组(这是在循环中):
NSString *code = [NSString stringWithFormat:@"%@ - (%@) %@",[tempDic objectForKey:@"state"],[tempDic objectForKey:@"city"],[tempDic objectForKey:@"name"]];
[tempArrayOfAirports removeObjectIdenticalTo:code]; // checks for a previous object, then removes if found
[tempArrayOfAirports addObject:code]; //adds the object
以前,代码只是:
NSString *code = [tempDic objectForKey:@"city"];
[tempArrayOfAirports removeObjectIdenticalTo:code];
[tempArrayOfAirports addObject:code];
哪种方法运行正常,但由于某种原因,更改“代码”使其无法找到其他相同的字符串。我的结果是一个包含许多重复对象的庞大阵列。
答案 0 :(得分:9)
由于您在新代码中创建了新字符串,因此您可能希望使用removeObject:
而不是removeObjectIdenticalTo:
。 removeObjectIdenticalTo:
方法使用对象地址来测试“相同性”,而removeObject:
使用isEqual:
测试相等性。如果您只关心字符串的内容,请使用removeObject:
。
在旧代码中,您可能会将同一个对象插入tempDic
和tempArrayOfAirports
,以便进行地址检查。在您的新代码中不是这种情况,您可以使用stringWithFormat:
创建一个新字符串(在新地址处)。