[myItem enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
if (obj isEqualToString:@"someString" > 1) { // not correct syntax
self.someLabel.text = [self.someLabel.text stringByAppendingString:[NSString stringWithFormat:@"\t\t%@\n", obj]];
}
}];
我试图检查obj是否等于" someString"。如果" someString"显示多个我想从obj中删除它。
" itemOne"
" otherItem"
" someString"
" someString" < - 删除
" someString" < - 删除
我在目标c的循环中动态执行此操作时遇到问题。
答案 0 :(得分:0)
更简单的解决方案是将数组转换为有序集,然后再转换回数组。这将删除重复。
答案 1 :(得分:0)
尝试这样,
UniqArray = [CurrentArray valueForKeyPath:@"@distinctUnionOfObjects.self"];
或
NSArray *UniqArray = [[NSOrderedSet orderedSetWithArray:CurrentArray]allObjects];
或
NSArray *UniqArray = [[NSSet setWithArray:CurrentArray] allObjects]
答案 2 :(得分:0)
您可以将其转换为有序集,删除重复项,然后将其转换回数组。
// remove duplicates
NSOrderedSet *myItemSet = [NSOrderedSet orderedSetWithArray:myItem];
// convert it back to NSArray
NSArray *myItemArrayWithoutDuplicates = myItemSet.array;
答案 3 :(得分:0)
您可以使用continue语句显示没有dublicates的数据
[myItem enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
if ([obj isEqualToString:@"someString"]) {
self.someLabel.text = [self.someLabel.text stringByAppendingString:[NSString stringWithFormat:@"\t\t%@\n", obj]];
continue;
}
}];
这将在标签中分配的值之后的当前迭代中存在。
如果要删除dublicate对象。如果物品顺序无关紧要......
NSArray *itemsArray = [[NSSet setWithArray: myItem] allObjects];
如果物品的顺序很重要..
NSMutableArray *uniqueItems = [NSMutableArray array];
for (id item in myItem)
if (![uniqueItems containsObject:item])
[uniqueItems addObject:item];
希望它可以帮助你..
答案 4 :(得分:0)
快速5
let array = ["itemOne", "otherItem", "someString", "someString", "someString"]
print(array) // "itemOne", "otherItem", "someString", "someString", "someString"]
var set = Set<String>()
for item in array{
set.insert(item)
}
print(set) // ["otherItem", "someString", "itemOne"]