从包含User类对象的NSMutableArray获取属性的唯一对象

Yag*_*iya 5 iphone ios

@interface User : NSManagedObject
@property (nonatomic, retain) NSString * user_name;
@property (nonatomic, retain) NSString * group_id;
@end
Run Code Online (Sandbox Code Playgroud)

NSMutableArray包含User类型的对象集我希望基于属性检索唯一对象user_name 意味着我想防止重复user_name


NSMutableArray *arrayBikePartsFiltering = [NSMutableArray new];

arrayAsFoundSubPart = @[@{
                           partid:12,
                           name : @"Silencer"
                          },
                          @{
                           partid:11,
                           name : @"Gear"
                           },
                          @{
                               partid:13,
                               name : @"Break"
                           },
                          @{
                               partid:12,
                               name : @“Silencer”
                           },];

        for (BikeParts *subPart in arrayAsFoundSubPart) {
            
            BOOL isFound = NO;
            for (BikeParts *subPartl2 in array BikeParts Filtering) {
                if ([[subPartl2.part_id stringValue] isEqualToString:[subPart.part_id stringValue]]) {
                    isFound = YES;
                    break;
                }
            }
            if (!isFound) {
                [arrayBikePartsFiltering addObject:subPart];
            }
            
        }
Run Code Online (Sandbox Code Playgroud)

按照上述阵列我想partid=12name="silencer"只有一次导致阵列,我想:

arrayAsFoundSubPart = @[@{
                           partid:12,
                           name : @"Silencer"
                          },
                          @{
                           partid:11,
                           name : @"Gear"
                           },
                          @{
                               partid:13,
                               name : @"Break"
                           }
                          ];
Run Code Online (Sandbox Code Playgroud)

Ale*_*nov 0

NSSet 是您所需要的您可以使用 NSOrderedSet 来保留顺序:

NSOrderedSet* set = [[NSOrderedSet alloc] initWithArray:arrayAsFoundSubPart];
Run Code Online (Sandbox Code Playgroud)

这将为您提供一组完全独特的对象;

如果您使用自定义类,您应该实现isEqual方法来比较对象(例如通过 Id):

- (BOOL)isEqual:(BikeParts*)object {
  return ([object isKindOfClass:[BikeParts class]] && [object.name isEqual:self.name]);
}
Run Code Online (Sandbox Code Playgroud)

结果集将包含唯一对象的有序序列。

或者,您可以循环遍历数组并按 id 将值分配给字典:

NSMutableDictionary* dict = [NSMutableDictionary new];
for (BikeParts *subPart in arrayAsFoundSubPart) {
  //if (!dict[subPart.name])
    dict[subPart.name] = subPart;
}
Run Code Online (Sandbox Code Playgroud)

结果将在dict.allValues

编辑:按名称过滤而不是按 ID 过滤