我有以下JSON响应。目前,我的POST请求会给我"用户名"在我的控制台输出中。但是,当我运行应用程序时,我的alertView(在handlingAuthentication中找到,链接提供)返回nil。
{
"username" : [
"The username field is required."
],
"password" : [
"The password field is required."
]
}
我如何:
这是我的POST请求
import Foundation
import Alamofire
import SwiftyJSON
import RealmSwift
class Login {
init(userName: String, passWord: String) {
Data.sharedInstance.userName = userName
Data.sharedInstance.passWord = passWord
}
// call this method to login
func getRequest() {
Alamofire.request(.POST, Data.todoEndpoint, parameters: ["username": Data.sharedInstance.userName!, "password": Data.sharedInstance.passWord!])
.responseJSON { response in
var errorFound = Bool()
var errorMessage = String()
if let result = response.result.value
{
let value = JSON(result)
var outcome = String()
//No username
if value["password"] == nil && value["message"] == nil && value["name"] == nil
{
errorFound = true
for output in value {
errorMessage = output.0
print(errorMessage)
}
}
}
else
{
print("JSON data is nil.")
}
let errorDict = ["error": errorFound, "message": errorMessage]
NSNotificationCenter.defaultCenter().postNotificationName("errorPresent", object:errorDict)
}
}
}
我在此处显示提醒消息的代码在https://codeshare.io/VilQl
答案 0 :(得分:1)
你可以做点什么,
var dict: [NSObject : AnyObject] = [NSObject : AnyObject]() // your response here which you have print in question
var arr: [AnyObject] = (dict["username"] as! [AnyObject])
let str: String = arr[0] as! String
然后将此字符串传递给alertview的消息。
希望这会有所帮助:)
答案 1 :(得分:0)
首先确定
if(errorFound as! NSObject == 1)
应该给你一个警告,因为if let errorFound = dict["error"]{
已经解开了errorFound所以使用as!是多余的:)
你可以简单地说
if(errorFound as NSObject == 1)
第二个let errorMessage = dict["message"]?.stringValue
这可以替换为
let errorMessage : String! = dict["message"]! as! String
如果你想检查字典是否有关键信息的任何值
if let errorMessage = dict["message"] as? String{
print("\(errorMessage)")
}
现在你的警报应该正确显示:)
修改强>
根据你的评论:)
if value["message"] == nil && value["name"] == nil
{
errorFound = true
errorMessage = value["username"][0]
errorMessage += "\n"
errorMessage += value["password"][0]
}
这应该将数据传递给下一个方法:)