読者です 読者をやめる 読者になる 読者になる

Swift で AFNetworking を使う

ios swift

CocoaPods で AFNetworking をインストール

Podfile に

pod "AFNetworking"

を追加して pod install 実行。

Bridging-Header で AFNetworking のヘッダーをインポート

<プロジェクト名>-Bridging-Header.h に

#import <AFNetworking/AFNetworking.h>
#import <AFNetworking/UIImageView+AFNetworking.h>

を追加。

画像の非同期ダウンロード機能も使いたいので、 AFNetworking.h だけでなく UIImageView+AFNetworking.h もインポートしている。

AFHTTPRequestOperationManger を使ってみる

func loadRepositories() {
    let manager = self.createManager()
    manager.GET(
        "user/repositories/",
        parameters: nil,
        success: { (operation, json) -> Void in
            let array = json as NSArray

            // 配列を使ってなにかやる
        },
        failure: { (operation, error) -> Void in
            // エラー処理
        }
    )
    return nil
}

private func createManager() -> AFHTTPRequestOperationManager {
    let manager = AFHTTPRequestOperationManager(baseURL: self.baseUrl)

    manager.requestSerializer = AFHTTPRequestSerializer()

    // ユーザー名とパスワードを設定
    manager.requestSerializer.setAuthorizationHeaderFieldWithUsername(
        self.username!, password: self.password!)

    return manager
}

画像を非同期にダウンロードして表示してみる

UIImageView+AFNetworking.h をインポートすると、 AFNetworking が提供する画像の非同期ダウンロードが使える。

cell.imageView.setImageWithURL(
    NSURL(string: imageUrl),
    placeholderImage: userMenuImage
)