gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 17:49:00 27 4
gpt4 key购买 nike

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

  • 名称
  • 颜色
  • 类型

  • 在一个数组(名称:oldArray)中,我有几个汽车对象。在一个常见的时间间隔中,我将访问一个API,并获得另一个包含多个汽车对象的数组(名称:newArray)。我需要比较两个数组并获取唯一项的列表并将其显示给用户。

    条件。
    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;
    }

    有没有比这更好更好的方法了?
    任何意见和建议表示赞赏。

    最佳答案

    //Create NSSet from Array

    NSSet* oldset = [NSSet setWithArray:oldArray];
    NSSet* newset = [NSSet setWithArray:newArray];

    // retrieve the Name of the objects in newset
    NSSet* newset_names = [newset valueForKey:@"Name"];
    // only keep the objects of oldset whose 'Name' are not in newset_names
    NSSet* oldset_minus_newset = [oldset filteredSetUsingPredicate:
    [NSPredicate predicateWithFormat:@"NOT Name IN %@",newset_names]];

    //And Same can be used for find newset not have name in oldset

    // retrieve the Name of the objects in oldset
    NSSet* oldset_names = [oldset valueForKey:@"Name"];
    // only keep the objects of newset whose 'Name' are not in oldset_names
    NSSet* new_minus_oldset = [newset filteredSetUsingPredicate:
    [NSPredicate predicateWithFormat:@"NOT Name IN %@",oldset_names]];

    //Now convert back to Array from sets
    NSArray *new_minus_oldArray = [new_minus_oldset allObjects];
    NSSet* oldset_minus_newArray = [oldset_minus_newset allObjects];

    关于ios - 比较两个NSArray的自定义对象并列出这些数组的不同对象的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37294634/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com