在我們開發(fā)的過程中,為了方便會 定義很多宏定義,像systemColor,systemUrl 之類的,如果是在OC開發(fā)的項目中不會出現(xiàn)問題,但是現(xiàn)在是在swift開發(fā)中,問題就顯現(xiàn)出來了。
我的項目中,登錄時,帳號,密碼,組織機構(gòu)ID等等其他一些程序中要用到的東西 都是使用UserDefault存儲在本地,然后定義一個宏定義取出來,像這個樣子 :

錯誤的做法
(ToolHelper.swift_GetUserDefaults()是封裝的UserDefault取數(shù)據(jù)的方法),這樣在程序運行中是不會有問題的;但是如果你退出了,切換了帳號重新登錄,問題就來了:SystemUserPWD 它被定義為一個常量,所以它一旦被賦值就不會再改變,這就導(dǎo)致了 存儲在本地的數(shù)據(jù)已經(jīng)改變了,但是 SystemUserPWD 還是退出登錄以前 的數(shù)據(jù),程序中一旦用到這個值就會出問題了。
解決辦法就是 SystemUserPWD不要定義為一個 常量,而是定義為一個 方法,像這樣:

正確的做法
這樣每次使用到它的時候 都是現(xiàn)取值就不會出現(xiàn)問題了。