Swift - 委托协议结构

2023-12-03

请原谅我对 Swift 还很陌生。我想创建一个用于“POST”请求并从服务器获取响应的委托。然后将从服务器返回的参数传递给 func 并允许我的主类做出相应的响应。下面是我的代表和我的主要课程。它没有打印 LoginViewController 类中的响应日志。我有点迷失了,不太知道哪里出了问题。非常感谢有关如何使其发挥作用或更好的方法的建议/指示。谢谢!

代表班

import Alamofire

protocol ServletDelegate {

   func responseSuccess(sender: Servlet, respArray : [String])

   func responseFail(sender: Servlet, respArray : [String])
} 

class Servlet : UIViewController{

    var delegate:ServletDelegate?

    //form 'data' parameter


    Alamofire.request(.POST, Config.flURL, parameters:["data" : ""]).responseData {
      response in
        print ("request \(response.request)")
        print ("response \(response.response)")
        print ("result \(response.result)")
        print ("data \(response.data)")

        let responseData = NSString (data: response.data!, encoding: NSUTF8StringEncoding)
        result = (responseData?.componentsSeparatedByString("~z0@"))!

        print("responseData :\(responseData)");
        print("result :\(result)");

        self.delegate?.responseSuccess(self, respArray: result);

}

主班

class LoginViewController: Servlet, UITextFieldDelegate, ServletDelegate {

    @IBAction func submitBtnAction(sender: UIButton) {

        Servlet().LoginUserHttp(tfUsername.text!, userPassword: tfPassword.text!);

    }

    func responseSuccess(sender: Servlet, respArray: [String]) {
        print("responseSuccess: \(respArray)");
    }

    func responseFail(sender: Servlet, respArray: [String]) {
        print("responseFail: \(respArray)");
    }

}

首先,您的 servlet 类不应该是 UIViewController,其次 - 不要使用 ;很快它是多余的,第三你没有设置委托,第四是委托应该很弱,这样你就不会遇到强引用循环,第五我没有看到传递发送者的理由

顺便说一句,您可能应该通过响应失败委托传递一些错误对象,但这取决于您

代表班

import Alamofire

protocol ServletDelegate: class {

   func responseSuccess(respArray : [String])

   func responseFail(respArray : [String])
} 

class Servlet {

    weak var delegate:ServletDelegate?

    //form 'data' parameter


    Alamofire.request(.POST, Config.flURL, parameters:["data" : ""]).responseData {
      response in
        print ("request \(response.request)")
        print ("response \(response.response)")
        print ("result \(response.result)")
        print ("data \(response.data)")

        let responseData = NSString (data: response.data!, encoding: NSUTF8StringEncoding)
        result = (responseData?.componentsSeparatedByString("~z0@"))!

        print("responseData :\(responseData)")
        print("result :\(result)")

        self.delegate?.responseSuccess(respArray: result)

}

主班

class LoginViewController: UIViewController, UITextFieldDelegate, ServletDelegate {


let servlet = Servlet()

@IBAction func submitBtnAction(sender: UIButton) {

/// im guessing you know what you are doing here, because we dont see that LoginUserHttp in your Servlet code        
servlet.LoginUserHttp(tfUsername.text!, userPassword: tfPassword.text!)

    }
override func viewDidLoad() {
    servlet.delegate = self
}

func responseSuccess(respArray: [String]) {
        print("responseSuccess: \(respArray)")
    }

    func responseFail(respArray: [String]) {
        print("responseFail: \(respArray)")
    }

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Swift - 委托协议结构 的相关文章

随机推荐

  • .sqlite 和 .storedata 之间有什么区别

    当您使用核心数据在 Xcode 上启动新的 iOS 项目时 它会使用扩展名初始化数据库 sqlite 当您对 OSX 的新项目执行相同的操作时 数据库的扩展名是 storedata 两者有什么区别吗 谢谢 iOS 上的 CoreData 仅
  • Dialogflow CX 中的可单击选项

    是否可以显示可点击的选项 in Dialogflow CX 如果 是 我可以举个例子 我在 Dialogflow CX 中创建了一个简单的代理 当用户输入城市名称时 我想列出应该是的密码可点击的 我怎样才能做到这一点Dialogflow C
  • String.Split 与字符串?

    我有一个可能非常简单的问题 我想做一个经典String Split 但是是字符串 而不是字符 喜欢string Split word 并返回一个数组 就像我所做的那样string Split x 您可以使用String Split stri
  • 验证器的 Spring 单元测试问题

    我正在尝试为我拥有的验证器类编写单元测试 因此 在我的 UniqueEmailValidator 类中 我注入了一个 Service 组件来检查它是否存在 AllArgsConstructor public class UniqueEmai
  • 对 c# .net 中的服务结果进行正确的空检查

    有贾里德 帕森斯的推文谁是 C 编译器开发人员 该推文声称我们应该使用 is object 作为非空检查 我的问题是为什么会这样 如果我从服务调用中得到结果 我应该运行 is object 检查而不是 null 吗 根据我的理解和我在微软文
  • 如何使用OpenSSL的SHA256函数

    我正在编写一个程序来熟悉 OpenSSL libncurses 和 UDP 网络 我决定使用 OpenSSL 的 SHA256 来熟悉行业加密标准 但我在使其正常工作时遇到了问题 我已将错误与 OpenSSL 与编译程序的链接隔离开来 我正
  • MySQL:使用 BEGIN&COMMIT 插入同一查询中的多个表

    我想使用 BEGIN 和 COMMIT 在同一查询中插入多个表 看来错误是在开始时发生的 这是我的 SQL 命令 BEGIN INSERT INTO Product pName pBrand pCategory pSize pQuantit
  • 如何获取字段类型和值?

    我目前正在尝试使用 mysql php 构建一个表单 下面是我到目前为止的代码的一部分 BLOCK 1 proceso mysqli fetch assoc result my query returns only one row
  • 默认模板类参数混淆了 g++?

    昨天 我遇到了 g 3 4 6 编译器问题 我使用 Intel 9 0 编译器编译的代码没有出现问题 下面的代码片段显示了发生的情况 template
  • 替代 tkinter.dooneevent

    我正在将一个程序 VMD 视觉分子动力学 移植到 Python 3 x 该程序是用 C 编写的 并且嵌入了 Python 和 TCL 解释器 其大部分 UI 是使用 TCL TK 框架和 OpenGL 进行硬编码的 因此 UI 刷新是手动完
  • 检查电子邮件地址在 iOS 上是否有效[重复]

    这个问题在这里已经有答案了 可能的重复 在 iOS 2 0 上的 Objective C 中验证电子邮件地址的最佳实践 我正在开发一个 iPhone 应用程序 我需要用户在登录时提供他的电子邮件地址 检查电子邮件地址是否有效的最佳方法是什么
  • 如何通过 SSH 连接到 colima 实例

    查找 SSH 所需的步骤colima 这太新了 文档有点匮乏 我需要复制卷并运行scp看起来很理想 最快的答案 colima ssh 使用快速回答ssh tmpconfig mktemp limactl show ssh format co
  • 旋转 UIButton

    我一直在尝试使用以下方法旋转按钮 IBAction rotate id sender CGPoint pencilCenter pencil center pencil setCenter pencilCenter CGFloat floa
  • Java/Mongodb 身份验证

    我看到很多教程展示了如何使用 Java 在 mongodb 中进行身份验证 我的 mongodb 配置为启用身份验证 在控制台中我使用 使用管理员 db auth myUser newPassword 并且运行良好 在java中 在访问的每
  • 按组的平均值划分数据列

    如果我有一个数据框 例如 group rep 1 4 each 10 data c seq 1 10 1 seq 5 50 5 seq 20 11 1 seq 0 3 3 0 3 DF data frame group data 现在 我想
  • 检测 PHP 变量不足:FALSE、NULL、unset()、empty()?

    定义 PHP 中不存在某个值或不足以满足应用程序需求的最佳方法是什么 var NULL var array var FALSE 最好的测试方法是什么 isset var empty var if var NULL if var 将变量初始化
  • System.in.read实际返回什么?

    什么是 System in read 返回 这文档 says 返回 数据的下一个字节 如果到达流末尾则为 1 49是字符的 ASCII 值1 它是第一个字节的值 The stream of bytes that is produced wh
  • 如何使用 Android 从 Firebase 数据库获取嵌套子项?

    我想从这种类型的 JSON 树中获取所有允许的子项的列表 databaseRef child Users child Allowded addValueEventListener new ValueEventListener Overrid
  • Django 测试:查看创建错误响应的回溯

    该模式来自 django 文档 class SimpleTest unittest TestCase def test details self client Client response client get customer deta
  • Swift - 委托协议结构

    请原谅我对 Swift 还很陌生 我想创建一个用于 POST 请求并从服务器获取响应的委托 然后将从服务器返回的参数传递给 func 并允许我的主类做出相应的响应 下面是我的代表和我的主要课程 它没有打印 LoginViewControll