LoginSignup
21
20

More than 5 years have passed since last update.

swiftでサーバーにテキストをPOSTする

Last updated at Posted at 2015-03-16

Question-Boardに投稿できるアプリを作ろうと思っています。

テキストの投稿には成功したのでメモを書きます

ViewController.swift

import UIKit

class ViewController: UIViewController, UITextFieldDelegate, NSURLSessionTaskDelegate{
    var json:NSData!
    override func viewDidLoad() {
        super.viewDidLoad()

        // UITextFieldを作成する.
        let myTextField: UITextField = UITextField(frame: CGRectMake(0,0,200,30))

        // 表示する文字を代入する.
        myTextField.text = ""

        // Delegateを設定する.
        myTextField.delegate = self

        // 枠を表示する.
        myTextField.borderStyle = UITextBorderStyle.RoundedRect

        // UITextFieldの表示する位置を設定する.
        myTextField.layer.position = CGPoint(x:self.view.bounds.width/2,y:100);

        // Viewに追加する.
        self.view.addSubview(myTextField)


    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

    /*
    UITextFieldが編集された直後に呼ばれる.
    */
    func textFieldDidBeginEditing(textField: UITextField){
        println("textFieldDidBeginEditing:" + textField.text)
    }

    /*
    UITextFieldが編集終了する直前に呼ばれる.
    */
    func textFieldShouldEndEditing(textField: UITextField) -> Bool {
        println("textFieldShouldEndEditing:" + textField.text)

        // まずPOSTで送信したい情報をセット。
        let str = "text=\(textField.text)"
        let strData = str.dataUsingEncoding(NSUTF8StringEncoding)

        let url: NSURL = NSURL(string: "送信したいサイトのPOST URL")!

        var request = NSMutableURLRequest(URL: url)

        // この下二行を見つけるのに、少々てこずりました。
        request.HTTPMethod = "POST"
        request.HTTPBody = strData

        var data = NSURLConnection.sendSynchronousRequest(request, returningResponse: nil, error: nil)
        var dic = NSJSONSerialization.JSONObjectWithData(data!, options:nil, error: nil) as NSDictionary

        return true
    }

    /*
    改行ボタンが押された際に呼ばれる.
    */
    func textFieldShouldReturn(textField: UITextField) -> Bool {
        textField.resignFirstResponder()

        return true
    }

}

ただし以下のようなエラーが出る。実機でない場合に出るらしいが,詳しいことはわからない。

スクリーンショット 2015-03-17 03.24.57.png

fatal error: unexpectedly found nil while unwrapping an Optional value
(lldb)

<エラーがなくなったので追加します 3/17>

var dic = NSJSONSerialization.JSONObjectWithData(data!, options:nil, error: nil) as NSDictionary

を以下に変更すればエラーがなくなった

var dic = NSJSONSerialization.JSONObjectWithData(data!, options:nil, error: nil) as? NSDictionary

swiftはvarの使い方を学べば理由もわかりそう
<>

次は画像投稿の方法を探る。

参考

テキスト投稿
http://qiita.com/mochizukikotaro/items/e2da2d3186ec24e291a6

テキストフィールド生成
https://sites.google.com/a/gclue.jp/swift-docs/ni-yinki100-ios/uikit/004-uitextviewde-wen-ziwo-ru-li

エラーの対処
http://blogios.stack3.net/swift/swift-dictionary

21
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
20