Abh*_*nav 6 cocoa-touch objective-c nsdictionary nsarray ios
我试图过滤掉NSArray的NSArray.在我的下面的例子中,我希望dict1,dict2和dict4分组在一个数组中,dict3和dict5分组在第二个数组中,dict6在第三个数组中.
我在NSArray中获取这些数据,所以基本上下面的"orig"数组是我的输入,我知道我需要根据"Name"键进行分组.
我没有循环遍历NSArray,而是使用valueForKeyPath基于键路径返回数组,但这不起作用(与日志崩溃 - [NSMutableArray addObjectsFromArray:]:数组参数不是NSArray').
任何建议.
NSDictionary *dict1 = @{@"Name" : @"T1", @"Age" : @"25"};
NSDictionary *dict2 = @{@"Name" : @"T1", @"Age" : @"25"};
NSDictionary *dict3 = @{@"Name" : @"T2", @"Age" : @"27"};
NSDictionary *dict4 = @{@"Name" : @"T1", @"Age" : @"25"};
NSDictionary *dict5 = @{@"Name" : @"T2", @"Age" : @"27"};
NSDictionary *dict6 = @{@"Name" : @"T3", @"Age" : @"28"};
NSArray *orig = @[dict1, dict2, dict3, dict4, dict5, dict6];
NSMutableArray *final = [NSMutableArray array];
final = [orig valueForKeyPath:@"@unionOfArrays.Name"];
NSLog(@"Final = %@", final);
Run Code Online (Sandbox Code Playgroud)
有点难以判断你想要的是三个不同的数组,其中每个数组只包含具有特定Name值的条目(如第一段建议的那样),或者如果你想要一个单独的数组,其中条目按顺序排序Name(如你的第二段建议的那样) ).而不管,
要按字段orig的值排序Name:
NSArray *sortedByName = [orig sortedArrayUsingDescriptors:@[[NSSortDescriptor sortDescriptorWithKey:@"Name" ascending:YES]]];
Run Code Online (Sandbox Code Playgroud)
要通过仅选择具有特定值的条目来获取新数组Name:
NSArray *t1Only = [orig filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"Name = %@", @"T1"]];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2767 次 |
| 最近记录: |