ios - ¿No se puede subindicar un valor de[AnyObject]? con un índice de tipo Int
xcode swift (5)
Esto está en una clase que extiende PFQueryTableViewController y recibo el siguiente error. Las filas serán solo PFUser
.
¿Por qué no soy capaz de lanzarlo? ¿Hay alguna forma de evitar esto?
El error es:
Cannot subscript a value of [AnyObject]? with an index of type Int
... para esta línea:
var user2 = self.objects[indexPath.row] as! PFUser
¡Solo agrega un! (signo de exclamación) después de los objetos, así:
var user2 = self.objects![indexPath.row] as! PFUser
Eso lo solucionó para mí :)
El problema no es el elenco, sino el hecho de que self.objects
parece ser una matriz opcional: ¿ [AnyObject]?
.
Por lo tanto, si desea acceder a uno de sus valores a través de un subíndice, primero debe desenvolver la matriz:
var user2: PFUser
if let userObject = self.objects?[indexPath.row] {
user2 = userObject as! PFUser
} else {
//handle the case of ''self.objects'' being ''nil''
}
self.objects?[indexPath.row]
usa encadenamiento opcional para desenvolver primero self.objects
, y luego llamarlo a su subíndice.
A partir de Swift 2, también podría usar la declaración de guardia :
var user2: PFUser
guard let userObject = self.objects?[indexPath.row] else {
//handle the case of ''self.objects'' being ''nil'' and exit the current scope
}
user2 = userObject as! PFUser
Me encontré con el mismo problema y lo resolvió así:
let scope : String = searchBar.scopeButtonTitles![searchBar.selectedScopeButtonIndex] as! String
Para su caso, puede hacer:
var user2 : PFUser = self.objects![indexPath.row] as! PFUser
Mi solución sería ...
- Si está seguro de que la vista de tabla solo contendrá usuarios, intente convertir los objetos en Array of AnyObject a Matriz de PFUser. luego úsalo.
Tuve un problema similar con la siguiente línea:
array![row]
No pude entender de dónde vino el problema; si reemplacé la row
con un número como 1
, compilé el código y lo ejecuté sin problemas.
Luego tuve la feliz idea de cambiarlo a esto:
array![Int(row)]
Y funcionó. Por mi vida, no entiendo por qué dar una matriz con un índice de -1
es teóricamente legal, pero ahí lo tienes. Para mí, tiene sentido que los subscritos no estén firmados, pero tal vez sea solo yo; Tendré que preguntarle a Chris sobre eso.