Cannot subscript a value of [AnyObject]? with an index of type Int Cannot subscript a value of [AnyObject]? with an index of type Int xcode xcode

Cannot subscript a value of [AnyObject]? with an index of type Int


The problem isn't the cast, but the fact that self.objects seems to be an optional array: [AnyObject]?.
Therefore, if you want to access one of its values via a subscript, you have to unwrap the array first:

var user2: PFUserif let userObject = self.objects?[indexPath.row] {    user2 = userObject as! PFUser} else {    // Handle the case of `self.objects` being `nil`.}

The expression self.objects?[indexPath.row] uses optional chaining to first unwrap self.objects, and then call its subscript.


As of Swift 2, you could also use the guard statement:

var user2: PFUserguard let userObject = self.objects?[indexPath.row] else {    // Handle the case of `self.objects` being `nil` and exit the current scope.}user2 = userObject as! PFUser


I ran into the same issue and resolved it like this:

let scope : String = searchBar.scopeButtonTitles![searchBar.selectedScopeButtonIndex] as! String

For your case, you might do:

var user2 : PFUser = self.objects![indexPath.row] as! PFUser


My workaround would be..

  1. If you are certain that the tableview will contain only users try to typecast the objects Array of AnyObject to Array of PFUser. then use it.