2016-08-24 110 views
1

在我的應用程序中,我有一些功能:login,getNews,getWeather。最後兩個函數只能在用戶登錄時執行。如果用戶已經登錄,我不想每次登錄,所以如果兩個最後的函數返回一個未登錄的錯誤,我想登錄,然後執行需要登錄的函數的隊列。 這只是一個例子,實際的代碼要長得多,而依賴於登錄的函數不止兩個。我想知道處理這種情況的最佳解決方案。僅在登錄時才獲取數據

+0

可以使用dispatch_group爲Web服務調用序列。 – vivekDas

回答

0

例如,您可以存儲UserDefaults登錄用戶的狀態。並根據這個調用你想要的任何功能。

+0

也許我不清楚。我知道,但我存儲餅乾..有時我可以註銷。 – Zac

0

當用戶登錄後,您可以將其憑證存儲在鑰匙串中。 看看這裏一個簡短的教程:

Tutorial One

Tutorial Two

然後,您可以每次檢查是否存儲了自己的憑證並自動登錄,然後執行getNews和getWeather函數。

+0

我的問題是關於GDC,我不想每次登錄。我想登錄一次,然後存儲sessionid cookie,雖然我不會因爲會話過期而被註銷,但我想繼續使用它來避免無用的請求。 – Zac

+0

@Zac,用戶是否登錄到某個外部服務器? –

+0

是的,事實上它超出了我的控制範圍 – Zac

0

要保存您的應用程序啓動之間的數據,你可以嘗試任何以下兩種方法:

1)很簡單的解決辦法是在你的UserDefaults用戶數據存儲在用戶詞典的形式。前者爲 。 NSUserDefaults.standardUserDefaults().setObject(userDict, forKey: @"User Dictionary")。如果你的userDict很大或很難製作,這可能會很痛苦。

2)另一種解決方案可以是使用存檔器存儲用戶數據。您可以從這個link製作您的自定義存檔器。

0

因此,當用戶成功登錄使用NSUserDefaults記錄value = 1

實施例;

使用該代碼添加prefs

let prefs:NSUserDefaults = NSUserDefaults.standardUserDefaults() 

登錄成功後set登錄object1

let logged = 1 
    prefs.setObject(logged, forKey: "logged") 

並檢查用戶是否loggednot logged顯示登錄

您可以在下面的檢查記錄添加代碼裏面到處項目

if prefs.valueForKey("logged") as! Int == 1 { 

    }else{ 

     // go login 
    } 

對於logout可以use;

let logged = 0 
    prefs.setObject(logged, forKey: "logged") 

感謝

相關問題