Advertisement
Guest User

Untitled

a guest
Mar 28th, 2017
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.90 KB | None | 0 0
  1. NSMutableArray *addressBookPhoneIndividuals = [NSMutableArray array];
  2. for (int i = 0; i < x; i++) {
  3. [addressBookPhoneIndividuals addObject:@{
  4. @"name" : @"...",
  5. @"ID" : @"...",
  6. @"phoneNumbers" : @{...}
  7. }];
  8. }
  9.  
  10. NSString *keyIAmLookingFor = @"work";
  11. NSString *valueIAmLookingFor = @"444-567-9019";
  12.  
  13. NSArray *addressBookPhoneIndividuals = @[
  14. @{
  15. @"name" : @"Mike Rowe",
  16. @"ID" : @"134",
  17. @"phoneNumbers" : @{
  18. @"work" : @"123-456-8000",
  19. @"school" : @"647-5543",
  20. @"home" : @"123-544-3321",
  21. }
  22. },
  23. @{
  24. @"name" : @"Eric Johnson",
  25. @"ID" : @"1867",
  26. @"phoneNumbers" : @{
  27. @"work" : @"444-567-9019",
  28. @"other" : @"143-555-6655",
  29. }
  30. },
  31. @{
  32. @"name" : @"Robot Nixon",
  33. @"ID" : @"-12",
  34. @"phoneNumbers" : @{
  35. @"work" : @"123-544-3321",
  36. @"school" : @"123-456-8000",
  37. @"home" : @"444-567-9019",
  38. }
  39. },
  40. ];
  41.  
  42. NSString *keyPath = [@"phoneNumbers." stringByAppendingString:keyIAmLookingFor];
  43.  
  44. NSPredicate *predicate =
  45. [NSComparisonPredicate predicateWithLeftExpression:[NSExpression expressionForKeyPath:keyPath]
  46. rightExpression:[NSExpression expressionForConstantValue:valueIAmLookingFor]
  47. modifier:NSDirectPredicateModifier
  48. type:NSEqualToPredicateOperatorType
  49. options:0];
  50.  
  51. NSArray *result = [addressBookPhoneIndividuals filteredArrayUsingPredicate:predicate];
  52.  
  53. NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%K = %@", keyPath, valueIAmLookingFor];
  54.  
  55. for (NSDictionary *individualDict in addressBookPhoneIndividuals) {
  56. NSDictionary *phoneNumbers = [individualDict objectForKey:@"phoneNumbers"];
  57. NSString *possibleMatch = [phoneNumbers objectForKey:keyIAmLookingFor];
  58. if ([possibleMatch isEqualToString:valueIAmLookingFor]) {
  59. return individualDict;
  60. }
  61. }
  62.  
  63. return nil;
  64.  
  65. NSPredicate *predicate = [NSPredicate predicateWithFormat:@"phoneNumbers.keyIAmLookingFor == %@", @"valueIAmLookingFor"];
  66. NSArray *matches = [addressBookPhoneIndividuals filteredArrayUsingPredicate:predicate]);
  67.  
  68. NSIndexSet* filteredIndexes = [addressBookPhoneIndividuals indexesOfObjectsPassingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop){
  69. NSString *name = [obj objectForKey:@"name"];
  70. NSString *ID = [obj objectForKey:@"ID"];
  71. NSDictionary *phoneNumbersDict = [obj objectForKey:@"phoneNumbersDict"];
  72.  
  73. return [[phoneNumbersDict objectForKey:@"keyIAmLookingFor"] isEqualToString:@"valueIAmLookingFor"];
  74. }];
  75.  
  76. NSArray* filteredArray = [addressBookPhoneIndividuals objectsAtIndexes:filteredIndexes];
  77.  
  78. i. –allKeysForObject:
  79. ii. –objectForKey:
  80. iii. –valueForKey:
  81. iv. –keysOfEntriesPassingTest:
  82. v. –keysOfEntriesWithOptions:passingTest:
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement