我設計了一個登錄應用程序。我已經在sqlite數據庫中輸入了帳戶數據。但是,當我用帳戶用戶名和密碼登錄時,我希望這些可以被所有視圖控制器訪問。因爲我有不同的控制器會更新帳戶的詳細信息。需要實現細節.. 謝謝在Objective C中創建全局變量
回答
避免全局變量 ,而您可以使用Singleton類來存儲應用程序範圍的憑據信息。
但請記住,在應用程序中存儲憑據的最佳方式是使用Apple Keychain,您可以在Apple網站上找到API參考。
至於有人說 - 避免全局變量,但如果你想他們肯定的 - 不喜歡它的C語言:
在一個文件中
中的所有其他文件定義這個變量是指其與extern
關鍵字
使用單:http://www.galloway.me.uk/tutorials/singleton-classes/
我有這樣的一個項目(請注意我用iOS的鑰匙串,而不是一個數據庫,但是我在這裏隱藏這些細節):
@interface User : NSObject
@property (nonatomic, strong) NSString *username;
+ (User *)currentUser;
@end
@implementation User
+ (User *)currentUser
{
static User *currentUser = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
currentUser = [[User alloc] initFromKeychain];
});
return currentUser;
}
@end
有辦法在做單身(取決於你想如何偏執是關於某人是否可以創建類的非單一實例或沒有)很多。這裏的示例:What should my Objective-C singleton look like?
您也可以直接在任何需要的地方直接訪問鑰匙串。你也應該問自己爲什麼你的代碼需要訪問一個用戶名/密碼。聽起來像是一個破碎的設計。
簡單地說:不要這樣做!
我建議將證書存儲在鑰匙串中。但不要使用Apple提供的示例代碼。它不起作用。我在我的項目中使用SSKeychain。
如果您不需要存儲憑據,您應該像aleroot建議的那樣僅使用一個實例的單例或類。
三個答案:
- 不要這樣做。
- 如果您必須這樣做,請使用Singleton。
- 要非常方便地訪問用戶名和非機密(即密碼)變量,請使用NSUserDefaults。
感謝所有的快速建議。我實際上需要在控制器之間訪問的用戶名。所以一旦用戶用他的用戶名(和密碼)登錄,取決於用戶名(從數據庫中選擇),用戶將被賦予某些特權。如何去做這件事? – user2741735
使用NSUserDefaults:https://developer.apple.com/library/mac/documentation/cocoa/Reference/Foundation/Classes/NSUserDefaults_Class/Reference/Reference。html NSUserDefault對象通過應用程序關閉和應用程序更新/升級持續存在。如果您的用戶註銷,請確保清除該對象。 – ArtSabintsev
- 1. 在asp.net中創建全局變量C#
- 2. Objective-C和全局變量
- 3. objective-c - 全局變量
- 4. 在Objective-C全局字符串變量
- 5. Objective-c在循環中創建變量
- 6. Objective C,類和全局變量
- 7. Objective-C,全局變量和線程
- 8. 創建全局變量
- 9. 在TypeScript中創建全局變量
- 10. 在Postgresql中創建全局變量
- 11. 創建全局變量?
- 12. C++構建全局變量
- 13. 創建一個全局類的objective-c?
- 14. 如何創建一個全局變量?
- 15. 如何在Objective-C中創建類的全局實例C
- 16. 如何在C#中創建一個全局變量?
- 17. 如何在iPhone中使用Objectvie-C創建全局變量?
- 18. 在Objective-C中,如何創建一個全局可訪問的全局配置?
- 19. 如何在Objective C中全局訪問這個變量?
- 20. Objective-C中的全局變量在ios proj
- 21. 在全局變量中丟失數據Objective-C Iphone
- 22. 如何在Objective-C中聲明一個全局變量?
- 23. 在一個類中創建一個es6變量全局變量
- 24. 聲明作爲全局變量在類中創建的變量
- 25. C++全局變量
- 26. 全局變量,C
- 27. C#全局變量
- 28. C++:全局變量
- 29. C#中的全局變量
- 30. c中的全局變量
您的意思是應用程序可以訪問實際的密碼?這不是一個好主意。像其他人一樣使用鑰匙串。 – jcm
使用DefaultUser ..它可能是最適合你:) – iPatel