ios - exponentes - como poner subindices en excel para mac
[NSObject: AnyObject]? '' no tiene un miembro llamado error ''subĂndice'' en Xcode 6 beta 6 (1)
Usé el siguiente par de líneas de código para obtener el marco del teclado cuando se muestra en la pantalla. Me he registrado en la notificación UIKeyboardDidShowNotification
.
func keyboardWasShown(notification: NSNotification) {
var info = notification.userInfo
var keyboardFrame: CGRect = info.objectForKey(UIKeyboardFrameEndUserInfoKey).CGRectValue()
}
Esto solía funcionar en beta 5. Descargué la versión más reciente de Xcode 6, que es beta 6 y este error ocurrió en la segunda línea.
''[NSObject: AnyObject]?'' no tiene un miembro llamado ''objectForKey''
Después de buscar en Google, me encontré con this solución. Y lo cambié como tal,
var keyboardFrame: CGRect = (info[UIKeyboardFrameEndUserInfoKey] as NSValue).CGRectValue()
Pero parece que también está desactualizado ahora. Porque recibo este error ahora.
''[NSObject: AnyObject]?'' no tiene un miembro llamado ''subíndice''
No puedo entender este error ni cómo resolverlo.
Como se menciona en las notas de la versión beta 6 de Xcode 6, se auditó una gran cantidad de API de la Fundación para la conformidad opcional. ¡Estos cambios reemplazan a T!
con cualquiera de T?
o T
dependiendo de si el valor puede ser nulo (o no), respectivamente.
notification.userInfo
ahora es un diccionario opcional :
class NSNotification : NSObject, NSCopying, NSCoding {
// ...
var userInfo: [NSObject : AnyObject]? { get }
// ...
}
entonces tienes que desenvolverlo. Si sabe que userInfo
no es nil
, simplemente puede usar un "desenvolvimiento forzado":
var info = notification.userInfo!
pero tenga en cuenta que esto se bloqueará en el tiempo de ejecución si userInfo
es nil
.
De lo contrario, mejor utilizar una asignación opcional:
if let info = notification.userInfo {
var keyboardFrame: CGRect = (info[UIKeyboardFrameEndUserInfoKey] as! NSValue).CGRectValue()
} else {
// no userInfo dictionary present
}