webmagnets
webmagnets

Reputation: 2296

How to prevent a 'Array index out of range' error?

Is there a way, similar to using if let and/or optionals, to test whether you are about to index an empty buffer in Swift?

Upvotes: 13

Views: 5174

Answers (1)

GoZoner
GoZoner

Reputation: 70145

Define your own:

extension Array {
  func ref (i:Int) -> T? {
    return 0 <= i && i < count ? self[i] : nil
  }
}

The ref() function returns an optional, so it can be nil, and you can use the if let syntax to access the returned value from ref() when it exists. You would use this as such:

var myA = [10,20,30]
if let val = myA.ref(index) {
  // Use 'val' if index is < 3
}
else {
  // Do this if the index is too high
}

Upvotes: 15

Related Questions