2015-12-12 112 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])

我只能舉個例子,因爲你還沒有說什麼需要可登錄方法被調用後。