将 Json 从 Php 返回到 Swift Alamofire

Posted

技术标签:

【中文标题】将 Json 从 Php 返回到 Swift Alamofire【英文标题】:Return Json from Php to Swift Alamofire 【发布时间】:2017-06-16 12:06:43 【问题描述】:

大家好,我在 swift 3 iphone 程序上使用 alamofire,我的问题是我需要从 php 页面返回一个值,我的问题是返回给我的值就是这个。如何确保我返回的值是:no prova@email.it

希望我已经解释过了

返回值(不正确):

SUCCESS: 
message = "no Optional(\"prova@email.it\")";

没有可选的(“prova@email.it”)

SWIFT 代码:

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 代码:

<?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);

?>

【问题讨论】:

你的答案是可选的吗? readvalue! 但如果我删除!我有一个错误:@AgRizzo @AgRizzo 所以,你需要接收“prova@email.it”而不是可选的吗? @SergeyDi 是的!!! 【参考方案1】:

我认为可以这样做:

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

必须打印,没有可选

【讨论】:

【参考方案2】:

刚刚在操场上做了这个,它按预期工作..

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()

这将打印:“readvalue is: hello world”

代码不是很安全...

【讨论】:

能否请您让我看看如何修改上面的代码以删除可选?【参考方案3】:

您需要使用 nil 合并来使您的值不可选。例如print(readvalue ?? "nil")。更好的方法是重新设计您的响应处理以正确返回类型值或特定错误。

【讨论】:

以上是关于将 Json 从 Php 返回到 Swift Alamofire的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 JSON 将数组从 php 解压到 Swift

在 Swift 3 中从 JSON 解析数组文字

将 JSON 数据从 Parse Cloud Code 返回到 Swift 中的可解码结构

如何将验证错误从 php 返回到 swift 或 segue 成功

如何在 IOS 上使用 Swift 解析 JSON,从 PHP 服务脚本发送?

如何将静态 JSON 从 PHP 返回到 extjs 存储