NSPredicate过滤掉玩家不拥有的父子对象

时间:2015-05-10 05:24:17

标签: objective-c arrays filtering nspredicate

我有一组群组。每个小组都有一个基本的构成;

Group {
  Name : NSString
  Children : NSArray
}

children数组中的每个子节点都可以由某个播放器拥有

所以ie;

Child1.owner = PlayerA

玩家只能在给定的组中拥有1个子项目。

我遇到的问题是我需要写一个NSPredicate来执行以下操作。

列出玩家A不拥有任何子女的所有群组。

我在想,因为玩家只能在给定的群体中购买一次,我应该将所有者阵列移动到群组,这可能会让它变得更容易。

无论如何,如果有人可以指示我如何在子孩子上过滤它,然后使用这些信息过滤掉不参与球员A的组。

非常感谢

1 个答案:

答案 0 :(得分:0)

这是代码的片段。我创建了一个虚拟数组来模拟过滤。

NSDictionary *obj1 = @{@"name":@"name1", @"children":@[@{@"owner": @"owner1"}, @{@"owner": @"owner2"}]};
NSDictionary *obj2 = @{@"name":@"name2", @"children":@[@{@"owner": @"owner1"}, @{@"owner": @"owner2"}, @{@"owner": @"owner3"}]};
NSDictionary *obj3 = @{@"name":@"name3", @"children":@[@{@"owner": @"owner1"}]};
NSArray *totalObj = @[obj1, obj2, obj3];

NSString *reqdOwner = @"owner2";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"not children.owner contains %@", reqdOwner];
NSArray *filtered = [totalObj filteredArrayUsingPredicate:predicate];

如果您需要帮助,请告诉我。