2010-01-25 48 views
1

在我的應用程序中,我使用NSUserDefaults對象來存儲用戶名,密碼和服務器URL在內置的設置應用程序。如果沒有保存數據,則向用戶呈現登錄界面,並在成功登錄後保存用戶名和密碼。然後在我的應用程序中,我有一個顯示此信息的視圖,但缺少文本,就好像數據尚未保存到設置中一樣。下面的代碼:iphone設置應用程序堅持數據

... 
NSUserDefaults* appSettings = [NSUserDefaults standardUserDefaults]; 
[appSettings setObject:username forKey:USERNAME]; 
[appSettings setObject:password forKey:PASSWORD]; 

if ([appSettings synchronize]) { 

    // display an alert with a positive message 
} else { 
    // display an alert with a negative message 

} 

因此,積極的信息在登錄後顯示出來,但是當我取數據再有什麼都沒有,除非我重新啓動應用程序。

我需要立即保存數據,或者至少在另一個視圖控制器需要讀取設置之前需要做些什麼?

回答

2

NSUserDefaults對象將其數據存儲在內存中,並且是一個全局對象(無論如何都是您的應用程序)。因此,您存儲在那裏的任何內容應該立即可用於任何試圖在之後訪問它的內容。你不需要在這裏調用同步。如果你沒有收到你的數據,你應該檢查你的電話的順序,以確保他們被認爲是他們的電話。

+0

啊哈!所以我在我的一個控制器中讀取awakeFromNib方法中的設置數據。我只是在該方法中設置了一個斷點,並且看到它立即被調用,我試圖在用戶單擊包含該特定視圖的選項卡時調用它。 awakeFromNib包含生成一些靜態數據的外部代碼,但我將它移動到viewDidLoad。 謝謝Ben! – Lex 2010-01-25 23:02:28