2010-07-06 8 views
6

In Mac OSX 10.6, la chiave del dizionario utenteè deprecata a favore di NSURLErrorFailingURLStringErrorKey. Sto cercando di scrivere il mio programma per renderlo portabile sia su Mac OSX 10.5 che su 10.6. Per il momento, sto solo usando la vecchia chiave, ma il mio compilatore mi sta dando fastidiosi avvertimenti deprecati.Codice portatile per chiave del dizionario utente deprecato (Cocoa)

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

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

Qual è il modo migliore per scrivere codice portabile per gestire deprecate chiavi del dizionario UserInfo?

risposta

3

È possibile utilizzare direttive del preprocessore in questo 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

Questo è quello che stavo cercando, grazie! –

1

Provare a impostare l'SDK di base su 10.6 e l'obiettivo di distribuzione su 10.5.

0

Per la versione Swift, è possibile utilizzare NSURLErrorFailingURLStringErrorKey:

if let url = error?.userInfo[NSURLErrorFailingURLStringErrorKey]{ 
    //code 
} 
Problemi correlati