Slide 1

Slide 1 text

Foundation Collections Kevin Conner @connerk

Slide 2

Slide 2 text

You know these • NSArray • NSDictionary • NSRange • NSNull

Slide 3

Slide 3 text

New syntax • array[i] • dictionary[k] • @[larry, moe, curly] • @{ key: value, foo: bar } • @3, @YES, @(array.count - 1)

Slide 4

Slide 4 text

Let’s talk about sets baby

Slide 5

Slide 5 text

NSSet • -addObject: • -removeObject: • -containsObject: • -anyObject

Slide 6

Slide 6 text

NSIndexSet • -addIndex: • -removeIndex: • -containsIndex: • -enumerateIndexesUsingBlock: • -enumerateRangesUsingBlock: • -countOfIndexesInRange: (et al)

Slide 7

Slide 7 text

Sets can be indexes for other collections • NSSet : NSDictionary :: NSIndexSet : NSArray • [dictionary keySet] • [NSIndexSet indexSetWithRange: • NSMakeRange(0, array.count)]

Slide 8

Slide 8 text

NSSet theory • -intersectsSet: • -isSubsetOfSet: • -unionSet: • -minusSet: • -intersectSet:

Slide 9

Slide 9 text

NSIndexSet theory • -containsIndexes: • -enumerateRangesUsingBlock: • -intersectsIndexesInRange: • -addIndexesInRange: • -removeIndexesInRange:

Slide 10

Slide 10 text

NSCountedSet • -addObject: • -removeObject: • -countForObject: • -initWithArray:

Slide 11

Slide 11 text

"An object can be put into the same pool several times, in which case it receives a release message for each time it was put into the pool."

Slide 12

Slide 12 text

Let’s talk about ordered collections baby

Slide 13

Slide 13 text

NSArray and NSOrderedSet • -objectAtIndex: • -indexOfObject: • -insertObject:atIndex: • -removeObjectAtIndex: • -exchangeObjectAtIndex:withObjectAtIndex:

Slide 14

Slide 14 text

Ordered collections and NSIndexSet • -objectsAtIndexes: • -insertObjects:atIndexes: • -removeObjectsAtIndexes: • -moveObjectsAtIndexes:toIndex: • -shiftIndexesStartingAtIndex:by:

Slide 15

Slide 15 text

Searching • -indexOfObject: • -indexOfObjectPassingTest: • -indexOfObjectAtIndexes:options:passingTest: • -indexOfObject:inSortedRange:objects:usingComparator:

Slide 16

Slide 16 text

Filtering • -objectsPassingTest: • -keysOfEntriesPassingTest: • -indexesPassingTest: • -indexesOfObjectsPassingTest: • -indexesOfObjectsAtIndexes:options:passingTest:

Slide 17

Slide 17 text

intermission

Slide 18

Slide 18 text

Making sets from other collections • +orderedSetWithSet: • +orderedSetWithArray: • +setWithArray • [orderedSet set]

Slide 19

Slide 19 text

Making arrays from sets • [orderedSet array] • -sortedArrayUsingDescriptors:

Slide 20

Slide 20 text

NSSortDescriptor • +sortDescriptorWithKey:ascending: • +sortDescriptorWithKey:ascending:selector: • +sortDescriptorWithKey:ascending:comparator:

Slide 21

Slide 21 text

Invocation • -makeObjectsPerformSelector: • -makeObjectsPerformSelectorWithObject:

Slide 22

Slide 22 text

Concatenation • -componentsJoinedByString:

Slide 23

Slide 23 text

NSCache look it up!

Slide 24

Slide 24 text

degreesgame.com Kevin Conner @connerk