2011-03-27 114 views

回答

1

正如deanWombourne說,你可以使用NSUserDefaults的來存儲這些數據,但它是不是很安全。如果你不想存儲這些數據,你可以看看Buzz Andersen的SFHFKeychainUtils將它們存儲在iPhone Keychain中。

首先,將SFHFKeychainUtils文件複製到您的項目中。點擊SFHFKeychainUtils.m並點擊獲取信息。轉到目標標籤並檢查目標附近的框是否已被選中。如果沒有,請檢查它。按住Control鍵並點擊您的Framework文件夾,然後選擇Add Existing Framework。找到Security.framework並將其添加到您的項目中。還請檢查通過爲SFHFKeychainUtils.m執行相同的過程將此框架添加到您的目標。現在在你想使用這段代碼的地方打開你的實現文件,並添加到頂部#import "SFHFKeychainUtils.h"

這是一個關於如何使用此代碼一個小例子:如果用戶有一個越獄的iPhone,他可以訪問com.domainname.app.plist和更改


// to store your data 
NSError *error = nil; 
[SFHFKeychainUtils storeUsername:kName andPassword:name forServiceName:kStoredName updateExisting:YES error:&error]; 
[SFHFKeychainUtils storeUsername:kScore andPassword:score forServiceName:kStoredScore updateExisting:YES error:&error]; 

// to get them back 
NSString *name = [SFHFKeychainUtils getPasswordForUsername:kName andServiceName:kScoredName error:&error]; 
double score = [SFHFKeychainUtils getPasswordForUsername:kScore andServiceName:kScoredScore error:&error]; 

// kName, kScore, kStoredName, kStoredScore are defined key but you can use also strings with @"your string here". 
// It is important that when you store and get back a value, username and serviceName must be the same.
+0

問題是,當我分配得分(雙值)發生錯誤無法比擬的類型 – 2011-03-27 11:45:13

+0

嘗試將雙轉換爲字符串之前存儲分數,當你想要得到它迴轉換它再次成爲一個雙... – matteodv 2011-03-27 11:47:47

+0

igot這些錯誤多次+ SFHFKeychainUtils.o中的[SFHFKeychainUtils storeUsername:andPassword:forServiceName:updateExisting:error:] SFHFKeychainUtils.o中的_kSecClassGenericPassword $ non_lazy_ptr – 2011-03-27 12:10:36

3

如果這是你是在救然後NSUserDefaults應該罰款

// To store 
[[NSUserDefaults standardUserDefaults] setObject:name forKey:@"name"]; 
[[NSUserDefaults standardUserDefaults] setDouble:score forKey:@"score"]; 

// To read back in 
NSString *name = [[NSUserDefaults standardUserDefualts] objectForKey:@"name"]; 
double score = [[NSUserDefaults standardUserDefaults] doubleForKey:@"score"]; 
// Don't forget that your name is autoreleased - if you want to keep it, set it to a retained 
// property or retain it yourself :) 
+0

你好謝謝回答,但以這種方式他的分數達到他想要的任何價值。我可以隱藏.plist的密鑰值 – 2011-03-27 10:54:19

+0

啊,你從來沒有說過安全:)這種方式是最簡單的,但如果你想要安全使用@馬修的答案,而不是:) – deanWombourne 2011-03-27 11:23:42

+0

鑰匙串不會保護用戶的數據。儘管訪問鑰匙串數據的確比訪問偏好更多,但它只是爲了保護用戶的數據(即不知道用戶密碼的用戶)。你也可以使用NSUserDefaults並使用存儲在應用程序代碼中的密鑰對值進行加密。 – 2011-04-06 15:30:58

相關問題