将 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 数据从 Parse Cloud Code 返回到 Swift 中的可解码结构
如何将验证错误从 php 返回到 swift 或 segue 成功