2013-09-30 11 views
5

Sto provando a convertire da ASIHttpRequest a AFNetworking ma mi sembra di avere un errore "Uso di identificatore non dichiarato AFURLSessionManager" nella riga seguente nella mia classe.AFNetworking include intestazioni

AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration]; 

ho inserito il seguente sul mio header:

#import "AFNetworking.h" 
#import "AFURLSessionManager.h" 

Deve essere qualcosa di davvero evidente, ma avere un peto cervello male adesso.

+0

come è stata importata la struttura? Stai usando CocoaPods? –

+0

In realtà ho semplicemente trascinato la cartella AFNetworking nel mio progetto, come se fosse qui http://mobile.tutsplus.com/tutorials/iphone/ios-sdk_afnetworking/ –

+0

... hai scaricato AFNetworking dal repository, o dal link sul sito tutorial? – lxt

risposta

5

Il comportamento si spiega semplicemente da questa linea di codice nel AFURLSessionManager.h

#if (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000) || (defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 1090) 

AFURLSessionManager fa uso di NSURLSession, che è disponibile da IOS 7 (e OSX 10.9) su.

Se si sta puntando su iOS 6, non è possibile utilizzare AFURLSessionManager ed è stato rimosso al momento della compilazione. Ecco perché ottieni l'errore.

L'impostazione di iOS 7 come destinazione minima di installazione risolverà l'errore di compilazione, anche se potrebbe non soddisfare le tue esigenze.


Detto questo, i miei suggerimenti è quello di utilizzare CocoaPods a gestite le dipendenze di terze parti, come ad esempio AFNetworking.

AFNetworking 2.0 è un framework modulare, che significa che è possibile scegliere quali moduli utilizzare in base alle proprie esigenze. Il core supporta iOS 6, ma alcuni moduli supportano solo iOS 7, come il modulo NSURLSession, che è quello in cui appartiene AFURLSessionManager.

La modularità si ottiene utilizzando CocoaPods subspecs. Al fine di importare AFNetworking e il modulo NSURLSession, dovrete solo fare qualcosa di simile

platform :ios, '7.0' 

pod 'AFNetworking',    '~> 2.0' 
pod 'AFNetworking/NSURLSession', '~> 2.0' 

È ancora possibile indirizzare iOS 6, ma non sarà possibile ottenere i moduli incompatibili, come specificato nella documentazione CocoaPods.

Un sottospecetto può limitare la piattaforma della specifica genitore. In questo caso sarà ereditato dalla specifica genitore solo se il target del podfile lo supporta.

+0

Sistemato, ho usato i cocoapod per installare AFNetworking, quindi ho dovuto aggiungere "$ {PODS_ROOT}/BuildHeaders" nei miei Percorsi di ricerca delle intestazioni in Impostazioni di compilazione. –

+0

in realtà se usi cocoapods produce un'area di lavoro automaticamente configurata. Basta aprire lo spazio di lavoro e utilizzarlo al posto del progetto. –