2010-07-06 6 views
6

En Mac OSX 10.6, la clave del diccionario userInfo NSErrorFailingURLStringKey está en desuso en favor de NSURLErrorFailingURLStringErrorKey. Estoy intentando escribir mi programa para que sea portátil tanto para Mac OS X 10.5 como para 10.6. Por el momento, solo estoy usando la clave anterior, pero mi compilador me está dando advertencias obsoletas molestas.Código portable para la clave del diccionario userInfo en desuso (Cocoa)

// The following causes deprecation warnings 
[[error userInfo] objectForKey:NSErrorFailingURLStringKey] 

// But this one won't work on OSX 10.5 
[[error userInfo] objectForKey:NSURLErrorFailingURLStringErrorKey] 

¿Cuál es la mejor manera de escribir código portable para manejar claves del diccionario de información del usuario en desuso?

Respuesta

3

Puede utilizar las directivas de preprocesador de este modo:

#if defined(MAC_OS_X_VERSION_10_6) && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6 
    [[error userInfo] objectForKey:NSURLErrorFailingURLStringErrorKey] 
#else 
    [[error userInfo] objectForKey:NSErrorFailingURLStringKey] 
#endif 
+0

Eso es lo que estaba buscando, gracias! –

1

Intente configurar el SDK base en 10.6 y el objetivo de despliegue en 10.5.

0

Para la versión Swift, puede utilizar NSURLErrorFailingURLStringErrorKey:

if let url = error?.userInfo[NSURLErrorFailingURLStringErrorKey]{ 
    //code 
} 
Cuestiones relacionadas