質問です。
現在、サンプルアプリとして
リアルタイム双方向通信を可能とした
チャットアプリをIOS用に開発しております。
サーバーサイドはNode.jsで
開発言語はSwiftになります。
ライブラリはSocket.IO_client_swiftをPodにて
インストールしております。
そして、今回の質問ですが
まずは、コードを見て頂きたいです。
Swift
1 2import UIKit 3import SocketIOClientSwift 4 5class ViewController: UIViewController { 6var socket: SocketIOClient! 7 8 @IBOutlet weak var sigoku: UITextField! 9 10 override func viewDidLoad() { 11 super.viewDidLoad() 12 13 // Do any additional setup after loading the view, typically from a nib. 14 15 let socket = SocketIOClient(socketURL: NSURL(string: "http://localhost:8080/")!, options: [.Log(true), .ForcePolling(true)]) 16 17 18 socket.on("connect") { data, ack in 19 print("socket connected!!") 20 } 21 22 23 socket.connect() 24 25 26 27 } 28 29 30 31 32 33 34 35 36 37 38 override func didReceiveMemoryWarning() { 39 super.didReceiveMemoryWarning() 40 // Dispose of any resources that can be recreated. 41 } 42 43 @IBAction func baki(sender: AnyObject) { 44 45 46 var nume = sigoku.text! 47 48 49 50 51 socket.emit("subaki",nume) 52 53 54 55 56 57 //socket.emit("subaki",nume) 58 59 60 61 62 63 } 64 65 66}
アプリの仕様ですが
とりあえず、今の段階では
アプリを開いて
テキストフィールドに文字を入力して
送信ボタンを押すと
Socket.emitでsubakiというイベント名で
サーバーにnumeというデータオブジェクトを発信して
それを待ち受けているサーバーがコールバック関数で引き受けて
サーバーのコンソールに先ほどテキストフィールドに入力した
文字を出力するといった流れです。
しかしながら送信バタンを押す、もしくは初期状態から
SocketにNilが入っているため
アプリが落ちます。
こちらをオプショナル型で宣言すれば
たしかにNilが入っても問題ないため
アプリケーションは落ちませんが
オプショナル型のままではサーバーがデータオブジェクトを
取り扱うことができません。
ですから、例えば、Socket = nil の場合に
Socktに値を導入するなどして
Sockt = nil の時にアプリケーションを
落ちなくする手法を知りたいです。
どなたら、ご教示して頂ければと思います。
お手数おかけしますが
何卒、ご回答の方宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/07/20 05:53