2013-09-30 9 views
5

Ich versuche, von ASIHttpRequest in AFNetworking zu konvertieren, aber ich habe einen Fehler "Verwendung von undeclared Identifier AFURLSessionManager" in der folgenden Zeile in meiner Klasse.AFNetworking Include-Header

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

Ich habe folgende auf meinem Header enthalten:

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

Es muss etwas wirklich offensichtlich sein, aber gerade jetzt ein schlechtes Gehirn Furz hat.

+0

Wie haben Sie das Framework importiert? Verwenden Sie CocoaPods? –

+0

Ich habe gerade den AFNetworking-Ordner in mein Projekt gezogen, so wie er es hier hatte http://mobile.tutsplus.com/tutorials/iphone/ios-sdk_afnetworking/ –

+0

... haben Sie AFNetworking aus dem Repository heruntergeladen, oder von der Link auf der Tutorialseite? – lxt

Antwort

5

Das Verhalten wird einfach durch diese Codezeile in AFURLSessionManager.h erklärt

#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 nutzt NSURLSession, die von iOS 7 verfügbar ist (und OSX 10.9) auf.

Wenn Sie auf iOS 6 ausgerichtet sind, kann AFURLSessionManager einfach nicht verwendet werden und es wird zur Kompilierungszeit entfernt. Deshalb erhalten Sie den Fehler.

Durch die Einstellung von iOS 7 als minimales Bereitstellungsziel wird der Kompilierungsfehler behoben, obwohl er möglicherweise nicht Ihren Anforderungen entspricht.


Das heißt, ist meine Vorschläge CocoaPods verwalteten Dritt Abhängigkeiten, wie AFNetworking zu verwenden.

AFNetworking 2.0 ist ein modulares Framework, das bedeutet, dass Sie auswählen können, welche Module gemäß Ihren Anforderungen verwendet werden sollen. Der Core unterstützt iOS 6, aber einige Module unterstützen nur iOS 7, wie zum Beispiel das NSURLSession Modul, das das ist, wo AFURLSessionManager gehört.

Modularität wird durch Verwendung von CocoaPods subspecs erreicht. Um AFNetworking und das NSURLSession Modul zu importieren, werden Sie nur etwas zu tun haben, wie

platform :ios, '7.0' 

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

noch Sie iOS ausrichten können 6, aber Sie werden nicht die inkompatiblen Submodule erhalten, wie sie in der CocoaPods Dokumentation angegeben.

Eine Unterspezifikation kann die Plattform der übergeordneten Spezifikation einschränken. In diesem Fall wird es nur dann von der übergeordneten Spezifikation übernommen, wenn das Ziel der Poddatei dies unterstützt.

+0

Korrigiert, ich habe Cocoapods benutzt, um AFNetworking zu installieren, dann musste ich die "$ {PODS_ROOT}/BuildHeaders" in den Header-Suchpfaden in den Build-Einstellungen hinzufügen. –

+0

tatsächlich, wenn Sie Cocoapods verwenden, wird ein Arbeitsbereich automatisch konfiguriert. Öffnen Sie einfach den Arbeitsbereich und verwenden Sie ihn anstelle des Projekts. –