iOS Dev Nugget 314 Checked Array Subscripting


Need to run a code review on your codebase? Hire me

Arrays are a common data structure in Swift:

let l = ["alice", "bob", "charlie"]

But array subscripting is unchecked, so this will crash at runtime:


Here's an extension to add a checked subscripting operator:

extension Array {
    subscript(checked index: UInt) -> Element? {
        if index < count {
            return self[Index(index)]
        } else {
            return nil

So you can do:

dump(l[checked: 2])
dump(l[checked: 3])

Since it returns an Optional, you can do:

if let element = l[checked: 2] {
    NSLog("Value: \(element)")

Note that the argument is UInt instead of Int or Index so the compiler can check when you pass in a negative index like this:

dump(l[checked: -1])

Your feedback is valuable: Do you want more nuggets like this?   Yes   or   No



Like this and want such iOS dev nuggets to be emailed to you, weekly?

Sign Me Up! or follow @iosdevnuggets on Twitter


View archives of past issues