2013-09-25 56 views
1

我正在構建一個簡單的Twitter克隆應用程序。基本上你用你的用戶名登錄並看到朋友的所有帖子。我正在爲用戶和發佈實體使用核心數據。登錄後在哪裏存儲用戶對象?

到目前爲止,我設法實現了身份驗證,但是我不知道在用戶成功登錄後,哪裏可以存儲用戶對象。我想也許將它保存爲AppDelegate的一個屬性,以便可以從任何viewcontrollers,但想知道這是否是正確的方法。

回答

0

我假設您可能必須從應用程序中的多個位置訪問用戶詳細信息。您應該將用戶信息存儲在模型類中,而不是使用模型行爲重載應用程序委託。一些開發人員(包括我自己)使用單例模式來創建模型類(或者在更復雜的應用程序,模型類和公共接口中與幕後的多個其他模型類進行交互),這些信息可以存儲,檢索,並且如果需要可選地保持。

+0

目前,我有一個User類與核心數據同步,和我加了''的類型User'財產current_user'到AppDelegate中,這樣我就可以像這樣調用它:'User * user = [self appDelegate] .current_user'(假設'appDelegate'函數返回主AppDelegate)。我如何修改這個來遵循你的建議? – Vlad

+0

Xcode 5在創建新項目時將CoreData相關的屬性和代碼放入appdelegate類中,但我選擇將該代碼移入單獨的模型類中。如果你這樣做了,你的模型類同樣會有一個current_user屬性。一個獨特的模型類的好處可能不是立竿見影的,但我認爲這是一個更具可伸縮性和MVC兼容的方法。 – bneely

0

最好將自己的用戶對象或更大的Context對象中的其他對象傳遞給用戶,然後根據需要將其分配給每個ViewController。

E.g.的上下文類

@interface MyContextClass 
@property (nonatomic) MyUserClass *user; 
@property nonatomic) Settings *settings; 
@end 

然後,在任何UIViewController上,都有一個用於此Context對象的屬性。

@interface MyViewController 
@property (nonatomic) MyContextClass *context; 
#end 

這是依賴注入的一個例子,和允許測試與不同的用戶/上下文/當地人等不同視圖控制器,而不必被捆綁到一個單例。

-1

您可以使用NSUserDefault。

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; 
[userDefaults setObject:username forKey:@"username"]; 
[userDefaults setObject:password forKey:@"password"]; 

,並把它弄出來的:

NSString username = [userDefaults objectsForKey:@"username"]; 
NSString password = [userDefaults objectsForKey:@"password"]; 
+0

請不要將用戶密碼保存爲用戶默認值。這就是[鑰匙串](https://developer.apple.com/library/mac/documentation/security/conceptual/keychainServConcepts/iPhoneTasks/iPhoneTasks.html#//apple_ref/doc/uid/TP30000897-CH208-SW1)對於! – mAu

相關問題