2014-03-03 84 views
0

我忙於編寫我的第一個可可應用程序,並且我必須在硬盤(用戶名和密碼)的某處存儲2個NSStrings。什麼是最好的方法來做到這一點?只需寫入一個文件?如果是這樣,那麼我將在哪裏存儲這個文件?對於少量數據的可可數據持久性

我只是不想使用一些矯枉過正的技術只是2個簡單的字符串..謝謝!

回答

1

最簡單的方法是使用UserDefaults。這是一個通常用於存儲應用程序設置和首選項的地方。

要存儲一個字符串

NSString *user = @"Peter"; 
[[NSUserDefaults standardUserDefaults] setObject:valueToSave forKey:@"userName"]; 

把它找回來以後

NSString *user = [[NSUserDefaults standardUserDefaults] stringForKey:@"userName"]; 

如果你保存的密碼,你可能會考慮對其進行加密,或而不是存儲密碼,存儲散列密碼。

+5

是的,無論是NSUserDefaults,還是使用iOS Keychain來存儲這些數據,因此它是安全的,特別是如果您需要在用戶刪除應用程序並在其他時間重新安裝時保留該數據。 以下是Apple關於Keychain服務的官方文檔:https://developer.apple.com/library/mac/documentation/security/conceptual/keychainServConcepts/iPhoneTasks/iPhoneTasks.html 還有幾個開源庫/包裝可用的相同。 – dezinezync

+0

Omg ...我想我需要去改變我的褲子...可可真棒! – Tiwaz89

+0

隨着更新的答案的推出,如果以後您仍然會使用這種方法,那麼存儲哈希密碼也將起作用。 – dezinezync

1

首先用MD5,SHA-1或其他算法加密用戶名和密碼字符串。

使用後:

NSUserDefaults* prefs = [NSUserDefaults standardUserDefaults]; 

[prefs setObject:encryptedUsername forKey:@"userName"]; 
[prefs setObject:encryptedPassword forKey:@"password"]; 

[prefs synchronize]; 


// To retrieve info 
encryptedUsername = [prefs objectForKey:@"userName"]; 
encryptedPassword = [prefs objectForKey:@"password"]; 

加密後的用戶輸入數據,並比較所述加密的字符串。

+0

如果OP需要在應用程序中使用某個位置,這基本上會使檢索到的信息無用。 – dezinezync