2015-12-12 113 views
0

我有这种使用案例,其中模型对象(例如类用户)有几个方法。将数据传递给委托人

该类中的某些方法需要验证(例如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,取其调用登录)。

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

我是斯威夫特新手,想知道我是否走在正确的道路上。有没有其他明显的方式来实现这个相当普遍的问题。

回答

0

在我的应用中,使用Url whiteList来解决这个问题, 例如,Url里面的用户认证接口里面包含“/ users /”这个字符串(或者其他字符串),当用户没有登录时和用于这种URL的请求发出的通知,通过一个统一的类来获得这个通知,然后弹出登录框

0

我是新来的斯威夫特,并想知道如果我在正确的打算路径。有没有其他明显的方式来实现这个相当普遍的问题。

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

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

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

  3. 将登录方法更改为接受更多参数并返回值\对象。

    例如:

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

我只能举个例子,因为你还没有说什么需要可登录方法被调用后。