ios distinctUnionOfObjects 没有返回字典的所有内容

标签 ios nsarray

我有一个带有 NSDictionaryNSArray 并尝试使用以下代码删除重复项:

NSDictionary *arnold = @{@"name" : @"arnold", @"state" : @"california"};
NSDictionary *jimmy  = @{@"name" : @"jimmy",  @"state" : @"new york"};
NSDictionary *henry  = @{@"name" : @"henry",  @"state" : @"michigan"};
NSDictionary *woz    = @{@"name" : @"woz",    @"state" : @"california"};

NSArray *people = @[arnold, jimmy, henry, woz];

NSMutableArray *results=[[NSMutableArray alloc]initWithArray: [people valueForKeyPath:@"@distinctUnionOfObjects.state"]];
NSLog(@"results %@", results);

这是我从 nslog 得到的输出:

results (
    california,
    michigan,
    "new york"
)

我的问题是如何将完整的目录添加到数组中?

最佳答案

@distinctUnionOfObjects 将只返回指定该属性的唯一对象值,而不是对象本身。

你可以试试这个:

NSDictionary *arnold = @{@"name" : @"arnold", @"state" : @"california"};
NSDictionary *jimmy  = @{@"name" : @"jimmy",  @"state" : @"new york"};
NSDictionary *henry  = @{@"name" : @"henry",  @"state" : @"michigan"};
NSDictionary *woz    = @{@"name" : @"woz",    @"state" : @"california"};

NSArray *people = @[arnold, jimmy, henry, woz];

NSMutableArray *uniqueArray = [[NSMutableArray alloc] init];
NSMutableSet *checkedStates = [[NSMutableSet alloc] init];

for (NSDictionary *person in people) {

    NSString *currentStateName = person[@"state"];        
    BOOL isDuplicateState = [checkedStates containsObject:currentStateName];

    if (!isDuplicateState) {
        [uniqueArray addObject:person];
        [checkedStates addObject:currentStateName];
    }
}

NSLog(@"Results %@", uniqueArray);

NSLog 的输出将是:

Results (
        {
        name = arnold;
        state = california;
    },
        {
        name = jimmy;
        state = "new york";
    },
        {
        name = henry;
        state = michigan;
    }
)

关于ios distinctUnionOfObjects 没有返回字典的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17433172/

相关文章:

iOS 将所有 NSArray 合二为一

ios - NSArray 从其他数组添加对象

ios - 返回多个字符串字符

iphone - 从其他常量构建常量变量列表

ios - 当我为 UITableViewController 分配一个自定义类后,它什么也没有出现

cocoa - 使用 nspredicate 使用字典过滤数组失败

ios - `[Quotes objectAtIndex: quoteNumber]` 没有返回任何东西

ios - 如何在 iPod 中设置全屏模式

ios - CareKit 和 ResearchKit 冲突

objective-c - NSArray 的不区分大小写的 indexOfObject