gpt4 book ai didi

swift - 通过 Alamofire + Swift 2 发布参数的语法

转载 作者:行者123 更新时间:2023-11-28 11:09:28 25 4
gpt4 key购买 nike

错误显示:“可选类型字符串的值?已展开。您是要使用 ! 还是?”。尝试通过 Xcode 更正错误并不能解决问题。

import Alamofire
import UIKit

class SignUpViewController: UIViewController {

@IBOutlet weak var usernametextfield: UITextField!
@IBOutlet weak var passwordtextfield: UITextField!
@IBOutlet weak var emailtextfield: UITextField!

override func viewDidLoad() {
super.viewDidLoad()
let usernameInput = self.usernametextfield.text
let passwordInput = self.passwordtextfield.text
let emailInput = self.emailtextfield.text

// thanks Michael
let parameters : [ String : AnyObject?] = ["hashword":passwordInput, "email":emailInput, "username":usernameInput]

// but now..
Alamofire.request(.POST, "http://my-ip/api/users", parameters:parameters).responseJSON { (_, _, JSON, _) -> Void in

编辑:更进一步,但下一行说:无法将类型“[String : AnyObject?]”的值转换为预期的参数类型“[String : AnyObject]?”

View 加载 block 中的最后几行代码是:

    Alamofire.request(.POST, "http://my-ip/api/users", parameters: ["foo": "bar"])
let translatedText: String? = JSON?.valueForKeyPath("responseData.translatedText") as String?

最佳答案

您已将参数声明为 AnyObject,但您正试图将 Optionals 放入其中。您可以将 ! 放在可选变量上(UITextField.text 是一个可选字符串):

let parameters : [ String : AnyObject] = ["hashword":passwordInput!, "email":emailInput!, "username":usernameInput!]

请注意,如果其中任何一个包含 nil,这将崩溃。

或者,由于您所有的参数都是可选字符串,您可以将参数声明为相同的:

let parameters : [ String : String?] = ["hashword":passwordInput, "email":emailInput, "username":usernameInput]

编辑:由于您使用的 Alamofire 需要将参数定义为 [String : AnyObject]?,您可以使用:

let parameters : [ String : AnyObject] = ["hashword":passwordInput ?? "", "email":emailInput ?? "", "username":usernameInput ?? ""]

这将使用值(例如 passwordInput),如果它不是 nil,否则使用空字符串。

关于swift - 通过 Alamofire + Swift 2 发布参数的语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36024073/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com