Using NSPredicate to filter an NSArray based on NSDictionary keys

It should work – as long as the data variable is actually an array containing a dictionary with the key SPORT NSArray *data = [NSArray arrayWithObject:[NSMutableDictionary dictionaryWithObject:@”foo” forKey:@”BAR”]]; NSArray *filtered = [data filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@”(BAR == %@)”, @”foo”]]; Filtered in this case contains the dictionary. (the %@ does not have to be quoted, this is done … Read more

Deep copying an NSArray

As the Apple documentation about deep copies explicitly states: If you only need a one-level-deep copy: NSMutableArray *newArray = [[NSMutableArray alloc] initWithArray:oldArray copyItems:YES]; The above code creates a new array whose members are shallow copies of the members of the old array. Note that if you need to deeply copy an entire nested data structure … Read more

filtering NSArray into a new NSArray in Objective-C

NSArray and NSMutableArray provide methods to filter array contents. NSArray provides filteredArrayUsingPredicate: which returns a new array containing objects in the receiver that match the specified predicate. NSMutableArray adds filterUsingPredicate: which evaluates the receiver’s content against the specified predicate and leaves only objects that match. These methods are illustrated in the following example. NSMutableArray *array … Read more

How to group by the elements of an array in Swift

Swift 4: Since Swift 4, this functionality has been added to the standard library. You can use it like so: Dictionary(grouping: statEvents, by: { $0.name }) [ “dinner”: [ StatEvents(name: “dinner”, date: “01-01-2015”, hours: 1), StatEvents(name: “dinner”, date: “01-01-2015”, hours: 1), StatEvents(name: “dinner”, date: “01-01-2015”, hours: 1) ], “lunch”: [ StatEvents(name: “lunch”, date: “01-01-2015”, hours: … Read more