2016-09-30 11 views
0

Webサーバーからテキストを読み込んでXcode uilabelに出力することはできますが、返す方法を解析する方法はわかりませんアレイ。私は、これはXcodeの8 PHPで、スウィフト3PHP、Xcode 8、Swift 3 - WebサーバーからXcodeシミュレータにアレイを返す方法

をそれらを追加し、印刷を使用してuilabelし、サーバーからaとbを取得しようとしています:

接続-add.php

<?php 
$a=3; 
$b=5; 
$data=array($a,$b); 
echo json_encode($data); 
?> 

Xcodeの8

import UIKit 
import Foundation 

class ViewController: UIViewController { 

var a=0 
var b=0 
var c=0 


@IBOutlet weak var result: UILabel! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a 
nib. 
} 

@IBAction func getVars(_ sender: AnyObject) { 

    // set label during request 

    self.result.text="WAITING" 

    // send request to connect-add.php and retrieve a and b 

    let myUrl = NSURL(string: "http://www.example.com/connect-add.php") 

    var request = URLRequest(url:URL(string: 
"http://www.example.com/connect-add.php")!) 

    request.httpMethod = "POST" 

    let postString = "" 

    request.httpBody = postString.data(using: .utf8); 

    let task = URLSession.shared.dataTask(with: request) { 
     data, response, error in 

     if error != nil 
     { 
      print("error=\(error)") 
      return 
     } 

     // receive response to connect-add and parse to a and b 

     var response = String(data: data!, encoding: .utf8) 

     var a=response[0] 
     var b=response[1] 

     // add a and b and display 

     var c=a+b 
     self.result.text=c 
    } 
    task.resume() 

} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 
} 

Xcodeは[0]、[1]のvar B =応答を設定するための私のvar A =応答を設定するためのエラーが発生します。何か案は?

私はJSONシリアライゼーション解析を追加するためにPHPとXcodeを編集しました。 Xcodeが1つのエラーを示しています - 未解決の識別子 "JSON"の使用。ここにコードがあります。

PHP

<?php 
$a=3; 
$b=5; 
$data="a1=".$a.", b1=".$b; 
echo json_encode($data); 
?> 

Xcodeの8次のようなものを見てする必要があります

import UIKit 
import Foundation 

class ViewController: UIViewController { 

var a=0 
var b=0 
var c=0 


@IBOutlet weak var result: UILabel! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a 
nib. 
} 

@IBAction func getVars(_ sender: AnyObject) { 

    // set label during request 

    self.result.text="WAITING" 

    // send request to connect-add.php and retrieve a and b 

    let myUrl = NSURL(string: "http://www.example.com/connect-add.php") 

    var request = URLRequest(url:URL(string: 
"http://www.example.com/connect-add.php")!) 

    request.httpMethod = "POST" 

    let postString = "" 

    request.httpBody = postString.data(using: .utf8); 

    let task = URLSession.shared.dataTask(with: request) { 
     data, response, error in 

     if error != nil 
     { 
      print("error=\(error)") 
      return 
     } 

     // receive response to connect and parse to a and b 

     var response = String(data: data!, encoding: .utf8) 

     var obj=JSON.parse(response) 

     var a=obj.a1 
     var b=obj.b1 

     // add a and b and display 

     var c=a+b 
     self.result.text=c 
    } 
    task.resume() 

} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 
} 
+0

'JSON =試してみましょうか? JSONSerialization.jsonObject(with:data) ' – cmorrissey

+0

@ cmorrissey JSON.parseを追加しました。それでも未解決の識別子 "JSON"を使用するとエラーが1つ発生します。 – Aleric

答えて

0
if var json = try JSONSerialization.jsonObject(with: data) as? [String: 
String], var a2 = json["a"], var b2 = json["b"] { 
// It's working 

} 
関連する問題