@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=12和name="silencer"只有一次导致阵列,我想:
arrayAsFoundSubPart = @[@{
partid:12,
name : @"Silencer"
},
@{
partid:11,
name : @"Gear"
},
@{
partid:13,
name : @"Break"
}
];
Run Code Online (Sandbox Code Playgroud)
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 过滤
| 归档时间: |
|
| 查看次数: |
92 次 |
| 最近记录: |