簡體   English   中英

使用SSKeychain存儲在鑰匙串中的用戶名是否總是出現在第4個索引中?

[英]Does the username stored in keychain using SSKeychain appears in 4th index always?

我正在使用SSKeychain將我的憑據存儲在iPhone中。 但是當我嘗試使用以下代碼檢索它時

NSArray *accountsArr = [SSKeychain accountsForService:@"User"];
    if(accountsArr)
    {
            NSDictionary *credentialsDict =accountsArr[0];
            NSArray *userNames = [credentialsDict allKeys];
            NSString *credential = (NSString *)credentialsDict[userNames[3]];
            self.usernameTxtFld.text = credential;
            credential = [SSKeychain passwordForService:@"User" account:self.usernameTxtFld.text];
            self.passwordTxTFld.text =  credential.length>0?credential:nil;
    }

我需要為存儲的用戶名指定userNames [3],它是否總是出現在索引3中,還是應該為此使用其他方法?

不可以,因為字典鍵沒有固有的順序。 NSDictionary文檔在對allKeys方法的討論中明確指出了這一點:

數組中元素的順序未定義。

擁有字典的目的是您通過特定的鍵查找內容。 在這種情況下,您似乎應該使用在kSSKeychainAccountKey定義的kSSKeychainAccountKey常量來獲取帳戶名,如下所示:

NSArray *accountsArray = [SSKeychain accountsForService:@"User"];
if ([accountsArray count] > 0) {
    NSDictionary *credentialsDictionary = accountsArray[0];
    NSString *accountName = credentialsDictionary[kSSKeychainAccountKey];
    NSString *password = [SSKeychain passwordForService:@"User" account:accountName];
    self.passwordTextField.text = password;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM