将数据传递给swift中的委托

时间:2015-12-12 11:02:22

标签: ios 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的新手,并且想知道我是否正走在正确的道路上。有没有其他明显的方法来实现这个相当常见的问题。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

我是Swift的新手,想知道我是否走在正确的道路上。有没有其他明显的方法来实现这个相当常见的问题。

是的,有几种方法可以选择解决这个问题。 e

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

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

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

    例如:

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

  4. 我只能给出一个例子,因为你没有明确说明在调用login方法后需要提供什么。