iOS

[Swift]AlamofireでファイルのUploadをしてみる

投稿日:

はじめに

こんばんは、suzukiです。
今更感がありますが、Alamofireを使って通信周りについてまとめさせていただきます。
最近プロジェクトの修正や追加開発が多く、Carthageでライブラリの導入を行う際に少しつまづきました、、、
備忘も兼ねてそちらも記述致します。
それではよろしくお願い致します。

CarthageでAlamofireを導入する

個人的にCarthageとCocoaPodsだとCocoaPodsの方が使用頻度が高いです。
今回は最初でも書きましたがCarthageで導入します。
Carthageについてはこちらが参考になります。

Carthageは下記コマンドで簡単に導入可能です。

CartFileの作成とライブラリのダウンロード

ターミナルから作成していきましょう。

Xcodeの設定

carthage update コマンドが完了するとCarthageディレクトリが作成されます。
Carthageディレクトリ内に今回アプリに組み込むライブラリがございます。
それでは実際にXcodeに設定してみましょう。

手順は下記の3手順です。
・Build Phases > Link Binary With Librariesに追加
・Run Script に/usr/local/bin/carthage copy-frameworksと記述
・Input Filesの項目にライブラリのディレクトリを記述する
dyld: Library not loaded: @rpath/Alamofire.framework/Versions/A/Alamofire Reason: image not found等の表示が出たらここを一度確認してみてください。以前にここのディレクトリに変な空白が入っていたせいでアーカイブだけ失敗したことがあったような、、、

手順完了後の画像です。

Alamofireとは

SwiftでHTTP通信を行う際に利用が多いライブラリです。
・リクエストの設定
・レスポンスの扱い
上記がURLSessionと比較して使いやすく下記のようにシンプルな形で記述ができます。
今回は疎通確認のためGitHubのリポジトリ検索のAPIを使っています。

AlamofireのHTTPMethod

AlamofireのHTTPMethodは省略が可能です。
設定がされていない場合はGETが設定されます。
AlamofireではHTTPMethodがEnumで定義されており、requestを作成する際に送信することが可能です。
・GET リソースの取得
・POST 子リソースの作成、リソースへのデータ追加、その他処理
・PUT リソースの更新、リソースの作成
・PATCH リソースの部分更新
・DELETE リソースの削除
・TRACE プロキシ動作の確認
・CONNECT プロキシ動作のトンネル接続への変更
・OPTIONS リソースがサポートしているメソッドの取得
上記が設定可能です。

GETに関して
先ほど通信のように特に設定を行わずrequestを作成するとGETが設定されます。
明示的に指定することも可能で、requestの作成を行う際にURLと一緒にmethodの引数に.getを渡すだけです。

その他のHTTPMethodの指定方法
Getで説明したmethodに対象のHttpMethodを設定するだけで使用可能です。
またMethodの指定だけではなくrequestの作成を行う際に
・Parameterの指定 [String:Any]型
・Headerの指定 [String:String]型
上記の指定が可能です。

※GitHubの検索APIがGETでしか使えないため、今回のURLではエラーが発生します。

ファイルのアップロード

以前の記事でAlamofireを使ってファイルをDLしてみるがあったので、今回の記事ではファイルのアップロードを行ってみます。
送信する際にはファイル以外の通信もまとめて行うことが考えられるためmultipart/form-dataで送信します。

クロージャーが二つあるため、少しわかりずらいかもしれません。
multipartFormData:でアップロードを行うファイルを追加を行い
・上記のエンコードが終了したらencodingResultでエンコード結果を受け取り
・エンコード結果が成功だったらベーシック認証を行い進捗を確認
上記の流れでプログラムを書いております。

さいごに

最後までありがとうございます。
APIのテスト環境の構築を行いもう少しテストを行いたかったのですが、本日はこちらで完了とさせていただきます。
通信については何度も通信箇所を書くのではなく、基底クラスを作成し継承等で実装することが多いかと思います。
現在の案件では基底クラスをしばらく触っていませんが、Swift3→Swift4.1の際に作りを変更予定です。
参照されている箇所が多いので、慎重に変更を加えていきたいです。

おすすめ書籍

詳解 Swift 第4版リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)よくわかるAuto Layout iOSレスポンシブデザインをマスター

blog-page_footer_336




blog-page_footer_336




-iOS
-

執筆者:


comment

メールアドレスが公開されることはありません。

CAPTCHA


関連記事

iOSでFirebase Authenticationを実装してみる その1

1 はじめに2 Firebaseプロジェクトの設定3 新規ユーザー登録4 既存ユーザーのログイン5 匿名ログイン6 エラーメッセージ7 最後に8 おすすめ書籍 はじめに はじめまして、Yossyです。 ...

Apple製のフレームワークCombineを触ってみた

1 はじめに2 Combineとは3 Publishers3.1 Future4 Subscribers4.1 sink4.2 assign5 Operators5.1 Prepend5.2 Appe ...

swift

[Swift]AVSpeechSynthesizerで音声再生

1 はじめに2 実装2.1 コード2.2 呼び出し3 さいごに はじめに こんにちは、nukkyです。 音声読み上げはちょっと今更感が漂いますが、案件で使用したばっかというのと、備忘録兼、初心者向けと ...

【Swift】ITMS-90726で警告された際の対応

1 はじめに2 警告について3 RXTestについて4 Carthageの設定の確認5 おまけ5.1 Carthage削除6 さいごに7 おすすめ書籍 はじめに こんにちはsuzukiです。最近アプリ ...

swift

[Swift]タブの切り替え時にアニメーションが簡単に実装できる「TransitionableTab」

1 はじめに2 準備3 実装4 さいごに はじめに こんにちは、nukkyです。 今回は、UITabBarControllerの切り替え時にアニメーションを実装できるライブラリ「Transitiona ...

フォロー

follow us in feedly

blog-page_side_responsive

2018年10月
 123456
78910111213
14151617181920
21222324252627
28293031 

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。
Get it on App Store
Get it on Google Play