質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

91.87%

  • Swift

    3884questions

    Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

alamofire4を使ったクライアントからサーバへの通信のコードの書き方がわかりません。

解決済

回答 1

投稿 2017/04/09 18:15

  • 評価
  • クリップ 0
  • VIEW 153

masa_lang8

score 5

前提・実現したいこと

現在、iOSアプリとローカルサーバ間で通信をするようなプログラムを書いています。
具体的には、アプリからJSON形式でデータを送るコードと、
サーバからJSON形式でデータを受け取るコードを書きたいと思っています。

今回人気のあるAlamofire4を利用して通信しようとしています。
そのためAlamofireのDocumentも読みました。

試しにswiftにコードを書いてみたところ、
コンパイルエラーが発生して、
どうすればいいのかわかりません。

cannot invokeで引数に問題があるらしいことまではわかるのですが、
具体的にどう記述すればエラーが解決しそうなのか検討がつきません。
どこをどう直せばいいのかご指摘よろしくお願いします。

発生している問題・エラーメッセージ

![イメージ説明](6268d6f9ba48b6e328fc416daf67d7a3.png)

該当のソースコード

let requestUrl = "http://192.168.33.10:8000"
let json = ["id": "0",
            "name": "taro"
        ]

        Alamofire.upload(json, requestUrl).response{response in
            debugPrint(response)
        }

試したこと

課題に対してアプローチしたことを記載してください

補足情報(言語/FW/ツール等のバージョンなど)

言語 swift
alamofire4.0

  • 気になる質問をクリップする

    クリップした質問に回答があった場合に通知・メールを受け取ることができます。

    クリップした質問はマイページの「クリップ」タブからいつでも見ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

// Alamofire ver 4.2.0 upload
public func upload(_ data: Data, to url: URLConvertible, method: Alamofire.HTTPMethod = default, headers: HTTPHeaders? = default) -> Alamofire.UploadRequest

シグニチャに従うとこうなりますか… 動作は保証できませんがエラーは解消するはずです

    let requestUrl = "http://192.168.33.10:8000"
    // jsonといいつつディクショナリだが…
    let json = ["id": "0",
                "name": "taro"
    ]

    // Dictionary -> Data 
    let data = NSKeyedArchiver.archivedData(withRootObject: json) as Data
    Alamofire.upload(data, to:requestUrl).response{response in
        debugPrint(response)
    }

投稿 2017/04/10 11:31

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    以下のような回答は評価を下げられます

    • 間違っている回答
    • 質問の回答になっていない投稿
    • 不快な投稿

    評価を下げる際はその理由をコメントに書き込んでください。

  • 2017/04/12 15:37

    fromageblancさん、回答ありがとうございました!
    webサーバ側にうまくデータを受け渡すことができたか否かは、
    まだ確認できていませんが、
    コンパイルエラー自体は解消されて、iOSアプリ自体は正常に動作するようになりました!
    ありがとうございました!

    キャンセル

  • 2017/04/12 15:41

    json と言いながらディクショナリ型になっていたこともご指摘いただき、
    ありがとうございました!
    勉強課題が明確になりました!

    キャンセル

  • 2017/04/18 23:57

    fromageblancさん、加えて質問です。

    archivedDataメソッドの引数を調べたらAny型でした。
    そこまではわかるんですが、
    その先がよくわからないので助けていただけると幸いです。

    https://teratail.com/questions/72951

    キャンセル

teratailには29人のエキスパートがいます

今すぐはじめる

もっと詳しく

関連した質問

同じタグがついた質問を見る

  • Swift

    3884questions

    Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

閲覧数の多いSwiftの質問