2013-09-30 7 views
5

Próbuję przekonwertować z ASIHttpRequest na AFNetworking, ale wydaje mi się, że mam błąd "Używanie niezadeklarowanego identyfikatora AFURLSessionManager" w poniższym wierszu w mojej klasie.AFNetworking to nagłówki

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

mam włączone następujące na moim nagłówku:

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

To musi być coś naprawdę oczywiste, ale zły mózgu pierdnięcie teraz.

+0

w jaki sposób zaimportował ramę? Czy używasz CocoaPods? –

+0

Właściwie właśnie przeciągnąłem folder AFNetworking do mojego projektu, tak jakby to było tutaj http://mobile.tutsplus.com/tutorials/iphone/ios-sdk_afnetworking/ –

+0

... czy pobierzesz AFNetworking z repozytorium, czy z link na stronie samouczka? – lxt

Odpowiedz

5

zachowanie jest tylko wyjaśnić tej linii kodu w 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 wykorzystuje NSURLSession, który jest dostępny z iOS 7 (a) na 10,9 OS X.

Jeśli kierujesz reklamy na system iOS 6, AFURLSessionManager, po prostu nie można go użyć i jest on usuwany podczas kompilacji. Właśnie dlatego pojawia się błąd.

Ustawienie iOS 7 jako minimalnego celu wdrożenia spowoduje naprawienie błędu kompilacji, nawet jeśli nie spełnia Twoich potrzeb.


Powiedział, że moje sugestie jest użycie CocoaPods zarządzanych zależności trzecich, takich jak AFNetworking.

AFNetworking 2.0 to modułowa struktura, co oznacza, że ​​można wybrać moduły do ​​wykorzystania zgodnie z własnymi potrzebami. Rdzeń obsługuje iOS 6, ale niektóre moduły obsługują tylko iOS 7, na przykład moduł NSURLSession, do którego należy AFURLSessionManager.

Modułowość osiąga się przez użycie CocoaPods subspecs. W celu zaimportowania AFNetworking i moduł NSURLSession, po prostu trzeba coś zrobić jak

platform :ios, '7.0' 

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

Nadal można kierować iOS 6, ale nie dostaniesz niezgodne submodules, jak określono w dokumentacji CocoaPods.

Subspec może ograniczać platformę specyfikacji nadrzędnej. W takim przypadku będzie on dziedziczony przez specyfikację nadrzędną tylko wtedy, gdy obiekt docelowy pliku podapli obsługuje go.

+0

Naprawiono, użyłem cocoapods do zainstalowania AFNetworking, a następnie musiałem dodać "$ {PODS_ROOT}/BuildHeaders" do moich Header Search Paths w ustawieniach Build. –

+0

Faktycznie, jeśli używasz cocoapods, automatycznie tworzy on przestrzeń roboczą. Po prostu otwórz obszar roboczy i użyj go zamiast projektu. –