2017-06-29 28 views
-2

こんにちはこんにちは私は自分のコードに問題があります。私はこの問題を3日間持っています。私はそれを自分で解決できません。誰が私のプロジェクトに協力したいですか、あなたは連絡先を離れることができます。私はご連絡いたします。ここJSONとしてのデータを取得してラベルswiftに表示する方法

私のPHPコード

<?php 
// Create connection 
$conn = @mysqli_connect('localhost', 'id2066022_oakkozht', 'oakko7596'); 
mysqli_select_db($conn, "id2066022_uficondb") or die ("no database"); 
date_default_timezone_set('Asia/Bangkok'); 
$timestamp = date('Y-m-d H:i:s'); 
$numQue=$_POST["numQue"]; 
$dated=$_POST["dated"]; 
$return_arr = array(); 

// Check connection 
if (!$conn) { 
    die("Connection failed: " . mysqli_connect_error()); 
} 
$insertation = "INSERT INTO uficontable (date_timestamp) 
     VALUES (CURRENT_TIMESTAMP)"; 
$selectation = "SELECT * FROM uficontable ORDER BY id DESC LIMIT 1"; 

    $insertationQuery = mysqli_query($conn, $insertation); 
    if (!$insertationQuery) { 
     echo "Could not process your information " . mysqli_error(); 
    } else { 
    $selectationQuery = mysqli_query($conn, $selectation); 
    while ($data = mysqli_fetch_assoc($selectationQuery)) 
    { 
     $return_arr[] = $data;  
    } 
    } 
echo json_encode($return_arr); 
echo "Connected successfully"; 

?> 

及びSWIFT

func requestPost() { 

    let request = NSMutableURLRequest(url: NSURL(string: "https://oakkohost.000webhostapp.com/test.php") as! URL) 
    request.httpMethod = "POST" 
    let postString = "numQue" 

    request.httpBody = postString.data(using: .utf8) 
    let task = URLSession.shared.dataTask(with: request as URLRequest) { data, response, error in 
     guard let data = data, error == nil else { 
      print("error=\(error)") 
      return 
     } 
     let responseString = NSString(data: data, encoding: String.Encoding.utf8.rawValue) 
     print("post: \(responseString)") 

       } 
    task.resume() 
}} 

結果は

[{ "ID" である "147"、 "date_timestamp": "2017- 06-26 16:42:16 "}]

問題はSwift Codeの私のラベルにIDを付けてこの結果を使用したいのですがどうすればいいですか?答え

答えて

1

ため

おかげで何をする必要があるdataからあなたJSONオブジェクトを取得するためにJSONSerializationを使用しています。またSwift 3では、NSMutableURLRequestNSURLの代わりにURLRequestURLを使用してください。

func requestPost() { 

    var request = URLRequest(url: URL(string: "https://oakkohost.000webhostapp.com/test.php")!) 
    request.httpMethod = "POST" 
    let postString = "numQue" 

    request.httpBody = postString.data(using: .utf8) 
    let task = URLSession.shared.dataTask(with: request) { data, response, error in 
     guard let data = data, error == nil else { 
      print("error=\(error)") 
      return 
     } 
     if let array = (try? JSONSerialization.jsonObject(with: data, options: [])) as? [[String:Any]], 
      let obj = array.first { 

      let id = obj["id"] as? String 
      //Set id to label on main thread 
      DispatchQueue.main.async { 
        self.yourIdLabel.text = id 
      } 
     } 

    } 
    task.resume() 
} 
+0

uは私にしてくださいお勧めできます、私は迅速にコーディングを開始しています。ありがとう –

+0

@JeabKungあなたが望むことは、私はあなたが望むものを全体のソリューションに入れたことを示唆していますか?あなたが知りたいことを詳しく説明してください。 –

0
var json: [Any]? 
do { 
    // Get json from data 
    json = try JSONSerialization.jsonObject(with: data) as? [Any] 
} catch { 
    print(error) 
} 
// Get item from json object 
guard let item = json?.first as? [String: Any], 
    let id = item["id"] as? [String: Any] else { 
     return 
} 
// Assign the `id` to your label 
yourLabel.text = id 
+0

エラーが発生しました。 "jsonObjectが生成します。期待どおりのコンテキスト結果タイプ[Any]" help meee –

+0

私は自分の答えを編集しました。基本的に '.jsonObject'を' [Any] 'にキャストしてください。 @NiravDの回答もうまくいくはずです。 – Lawliet

関連する問題