PHP, Xcode 8, Swift 3 — Как вернуть массив с веб-сервера в симулятор Xcode

Я могу прочитать текст с веб-сервера и распечатать его в коде UCAB, но я не знаю, как разобрать возвращаемый массив. Я пытаюсь получить a и b с сервера, добавить их и распечатать на uilabel с помощью Swift 3.

Это PHP и Xcode 8:

Connect-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 дает мне ошибку для установки var a = response [0] и для установки var b = response [1]. Есть идеи?

Я отредактировал PHP и XCode, чтобы добавить синтаксический анализ JSON. Xcode показывает одну ошибку — использование неразрешенного идентификатора «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

Решение

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

}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]