【问题标题】:How Do I Post an Alamofire JSON Request on button press?如何在按下按钮时发布 Alamofire JSON 请求?
【发布时间】:2016-03-16 07:24:53
【问题描述】:

我正在尝试构建一个具有登录功能的简单 iOS 应用程序,但首先我想制作它,以便在注册时按下“继续”按钮将数据发布到 REST api。由于某种原因,我无法成功地将其绑定到按钮。下面的代码不知道输入框是什么。我ctr+拖动按钮然后添加进去。

import Alamofire
import SwiftyJSON
import UIKit


class SignUpViewController: UIViewController {
    var onButtonTapped : (() -> Void)? = nil

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

    @IBAction func continueButtonPressed(sender: AnyObject) {

        // POST requests dont need a response!
        Alamofire.request(.POST, endpoint, parameters: inputboxes)

    }

    lazy var json : JSON = JSON.null
    let endpoint = "anyapi.com/api/users"

    override func viewDidLoad() {
        digestUser()
    }

    func digestUser() {

        let passwordInput = self.passwordtextfield.text
        let usernameInput = self.usernametextfield.text
        let emailInput = self.emailtextfield.text


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

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

}

编辑:Alamofire 无法正常工作,因为我忘记在 URL 前添加:“https://”

【问题讨论】:

  • 嗨@Natu,我认为你的标题有点欺骗性。您似乎遇到了将按钮的操作绑定到方法的问题,而不是 Alamofire 的问题。
  • 据我所知,我对这两个都有问题,而且标题都说,不是吗?
  • 嗨@Natu。根据您的描述,我感觉您只有绑定有问题。如果你有这两个问题,那么标题就可以了。

标签: ios json xcode swift alamofire


【解决方案1】:

inputboxes 声明为outlets 下方的实例变量:var inputboxes: [String:AnyObject] = [:],它应该可以工作。

【讨论】:

  • 它仍然没有编译。我的按钮似乎是问题
  • 实际上,它会编译,它只是在我使用此代码到达视图控制器之前发出信号 SIGABT 并在我的手机上停止然后指向我的 appdeligate 文件
  • 检查控制台消息。
  • 关于约束的一些冗长的事情也许我的 UI 只是搞砸了paste.ofcode.org/33rtpnGPz54EuzFArpmjED
  • 问题:** 由于未捕获的异常 'NSUnknownKeyException' 导致应用程序终止,原因:'[ setValue:forUndefinedKey:]:此类不符合键的键值编码继续按钮。'
【解决方案2】:
    Alamofire.request(.POST, BASE_URL , parameters: parameters as? [String : AnyObject])
        .responseJSON { response in
            if let JSON = response.result.value {
                    print("Success with JSON: \(JSON)")
                }
         } 

【讨论】:

  • 让参数:NSDictionary = ["key1":"Value1","Key2":"Value2"]
  • 目前两者都不起作用 - 我只是不知道将按钮按下部分放在哪里,这似乎是问题
  • 是你的输入框有数据。请检查,因为从 didload 调用 digestUser() 并且当您在 UITextField 中输入文本时,输入框应该有一些值。
【解决方案3】:

尝试在函数外部声明输入框,以便在整个类中都可以访问。

【讨论】:

    猜你喜欢
    • 2018-04-27
    • 2020-09-30
    • 1970-01-01
    • 1970-01-01
    • 2021-12-23
    • 1970-01-01
    • 2015-10-08
    • 1970-01-01
    • 2017-05-11
    相关资源
    最近更新 更多