iphone [删除对象相同:]不起作用

时间:2010-09-17 15:55:25

标签: iphone ipad nsmutablearray

我有以下代码填充数组(这是在循环中):

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];

哪种方法运行正常,但由于某种原因,更改“代码”使其无法找到其他相同的字符串。我的结果是一个包含许多重复对象的庞大阵列。

1 个答案:

答案 0 :(得分:9)

由于您在新代码中创建了新字符串,因此您可能希望使用removeObject:而不是removeObjectIdenticalTo:removeObjectIdenticalTo:方法使用对象地址来测试“相同性”,而removeObject:使用isEqual:测试相等性。如果您只关心字符串的内容,请使用removeObject:

在旧代码中,您可能会将同一个对象插入tempDictempArrayOfAirports,以便进行地址检查。在您的新代码中不是这种情况,您可以使用stringWithFormat:创建一个新字符串(在新地址处)。