2017-06-16 3 views
-2

Hallo Leute, ich benutze Alamofire auf einem schnellen 3 iphone Programm, mein Problem ist, dass ich einen Wert von der PHP-Seite zurückgeben muss mein Problem ist, dass der Wert, der zu mir kommt, ist dies . Wie kann ich sicherstellen, dass der Wert, den ich zurückkehren: nein [email protected]Return Json von Php nach Swift Alamofire

Ich hoffe, ich erklärt habe

UCKGABEWERT (nicht korrekt):

SUCCESS: { 
message = "no Optional(\"[email protected]\")"; 

} nein optional ("[email protected]")

SWIFT CODE:

import Foundation 
import Alamofire 

class User{ 

    //URL to our web service 

    var email="" 
    var password="" 

    func PrintValue(){ 

     // print(username); 
     //print(password); 
    } 

    func Login() -> String{ 

     //var ris=""; 
     var readvalue="" 
     let URLString = "http://localhost/test/login_mobile.php" 
     let parameters_value: Parameters = [ 
      "email": email, 
      "password": password 
     ] 


     //Sending http post request 
     Alamofire.request(URLString, method: .post, parameters: parameters_value).responseJSON 
      { 
       response in 
       //printing response 
       print(response) 

       //getting the json value from the server 
       if let result = response.result.value { 

        //converting it as NSDictionary 
        let jsonData = result as! NSDictionary 

        //displaying the message in label 
        readvalue = (jsonData.value(forKey: "message") as! String?)! 

        print(readvalue) 
       } 
     } 

     return readvalue 
    } 

} 

PHP CODE:

<?php 

include 'user.php'; 

header('Content-Type: application/json'); 
$email= $_POST['email']; 
$password = $_POST['password']; 

$ris['message']=""; 

$user = new User(); 

//procedo con il login 
if($user->login($email,$password,"MOBILE")==true){ 
    $ris['message']="yes"; 
} 


else{ 
    $ris['message']="no $email"; 
} 

echo json_encode($ris); 

?> 
+0

Ist das Problem, dass Ihre Antwort optional ist? 'readvalue!' – AgRizzo

+0

Aber wenn ich entferne! Ich habe einen Fehler: @AgRizzo – riki

+0

@AgRizzo so, müssen Sie "[email protected]" ohne optionale erhalten? –

Antwort

1

Ich denke, es kann getan werden, so etwas wie:

if let readvalue = jsonData.value(forKey: "message") as? String { 
    print(readvalue) 
} 

drucken müssen wihtout Optional

+0

Ich versuchte, änderte nichts – riki

+0

Es begann dank – riki

0

gerade tat dies auf einem Spielplatz und es funktioniert wie erwartet ..

import UIKit 

let response: [AnyHashable: Any] = [ 
    "message": "hello world" 
] 

class MyCoolClass { 
    func login() { 
     var readvalue = "" 

     let jsonData = response as NSDictionary 

     readvalue = jsonData.value(forKey: "message") as! String 


     debugPrint("the readvalue is: \(readvalue)") 

    } 
} 

let instance = MyCoolClass() 
instance.login() 

Dieser Druck wird: "Das ist Readvalue: Hallo Welt"

Der Code ist nicht sehr ausfallsicher ...

+0

Können Sie mir bitte sehen, wie Sie den obigen Code ändern, um optional zu entfernen? – riki

+0

readvalue = jsonData.value (forKey: "Nachricht") as! String – aofs

+0

Ich versuchte, änderte nichts – riki

0

Sie nil koaleszierende verwenden müssen Sie den Wert nicht optional zu machen. z.B. print(readvalue ?? "nil"). Besser wäre es, Ihre Antwortbehandlung zu überarbeiten, um einen typisierten Wert oder einen bestimmten Fehler korrekt zurückzugeben.