比较两个NSArray的自定义对象并列出这些数组中的不同对象的更好方法

时间:2016-05-18 08:51:59

标签: ios objective-c nsarray ios9.3

我有一个名为car的模型对象,它具有以下属性

  • 名称
  • 颜色
  • 类型

在数组中(Name:oldArray)我有几个汽车对象。在一个常见的Interval中,我将点击一个API并获得另一个数组(Name:newArray)的几个car对象。我需要比较两个数组并获取唯一项目列表并将其显示给用户。

条件。  1.如果来自newArray的对象不在oldArray中,那么我需要通知用户他有一辆新车和汽车名称  2.如果来自oldArray的对象不在newArray中,那么我需要通知用户他已将自己的汽车与汽车名称一起出售

我创建了以下方法

- (NSMutableArray *)getModifiedUserCarsFrom:(NSMutableArray *)savedCars NewCars:(NSMutableArray *)newCars {

    NSMutableArray *loopArray1;
    NSMutableArray *loopArray2;
    NSMutableArray *modifiedCars = [NSMutableArray array];

    if (newCars.count >= savedCars.count) {
        loopArray1 = newCars;
        loopArray2 = savedCars;
    } else {
        loopArray1 = savedCars;
        loopArray2 = newCars;
    }

    for (Car *old in loopArray1) {
        BOOL isCarExist = NO;
        for (Car *new in loopArray2) {
            if ([new.name isEqualToString:old.name]) {
                isCarExist = YES;
                break;
            }
        }
        if (!isCarExist) {
            [modifiedCars addObject:olde];
        }
    }
    return modifiedCars;
}

有没有比这更好更快的方法? 任何意见和建议都是赞赏的。

2 个答案:

答案 0 :(得分:4)

Dim list As New ArrayList()
For Each Str As String In file1array
    list.Add(Str.Substring(0, Str.IndexOf(".")))
Next

答案 1 :(得分:1)

使用以下代码,

第一个数组(savedCars)第二个数组(newCars)中的相同对象,如果你使用下面的代码,它会自动删除第一个数组中的相同对象(savedCars)。

[savedCars removeObjectsInArray: newCars];

希望它有用