繁体   English   中英

快速将数据传递给委托

[英]Passing data to delegate in swift

我有一个模型对象(例如User类)的方法很少的用例。

该类中的某些方法需要身份验证(例如,getProfile,getFriends等)。

   class User{

          var loginDelegate:LoginDelegate

          func getProfile{
              HTTPAsync.getProfile(payload){response in 
                     if response.status == 401 {
                           login(delegate)
                      }
               }


          func getFriends{
                 //similar code as above
                        login(delegate)
          }

用户成功登录后,我要调用相应的函数(getFriends,getProfile,以调用的登录为准)。

我一直在考虑使用委托模式。 但是由于我的类(用户)有多个需要登录的方法,因此我需要将一些数据传递给委托,在用户登录以调用适当的方法后必须读取这些数据。

我是Swift的新手,想知道我是否走对了路。 还有其他明显的方法可以解决这个非常普遍的问题。

在我的应用中,使用Url whiteList解决此问题,例如,当用户未登录并使用请求时,用户身份验证界面中的Url包含“ / users /”此字符串(或其他字符串)。这样的一个Url发出通知,由一个统一的班级接收这个通知,然后弹出登录框

我是Swift的新手,想知道我是否走对了路。 还有其他明显的方法可以解决这个非常普遍的问题。

是的,您可以选择两种方法来解决此问题。 Ë

  1. 在委托协议上定义getter方法,如果它不是您自己的委托协议,则可以使用扩展名来扩展其功能。

  2. 创建一个Enumeration作为实例变量,以便您可以在login方法中设置一个枚举值,登录方法完成后其他方法可以访问该方法。

  3. 更改登录方法以接受更多参数并返回value \\ object。

    例如:

    login(delegate: LoginDelegate, dictionaryOfOtherStuff: [String :AnyObject]?) -> (value_1: String, value_2 : [int])

我仅举一个例子,因为您没有确切说明调用login方法后需要提供的内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM