superindice subindices poner para mac exponentes como ios dictionary swift xcode6-beta6

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 }