2015-12-31 37 views
0

使用鑰匙串將登錄信息存儲到我的應用程序時遇到一些問題。它工作的很好,當我進出其他應用程序時會顯示信息,但是一旦我完全關閉應用程序並嘗試重新打開應用程序並單擊該按鈕以恢復應用程序崩潰的登錄信息。我將附上代碼和錯誤日誌。我明白,使用這個版本的鑰匙串不是由我在網上閱讀的大多數人完成的,人們似乎使用其他鑰匙串腳本,但希望有人遇到了這個問題。我有3個按鈕和2個文本字段來測試它。一個用於用戶名的文本字段,一個用於密碼,然後我有一個登錄按鈕來保存信息,一個按鈕來查看信息,然後是一個註銷按鈕。iOS鑰匙扣在獲取細節時崩潰

謝謝。

12月31日1時58分13秒柯蒂斯-iPhone uDropOff 3 [18034]: - [__ NSCFData rangeOfCharacterFromSet:]:無法識別的選擇發送到實例 0x147ed0338 12月31日1時58分13秒柯蒂斯-iPhone uDropOff 3 18034]: *終止應用程序由於未捕獲的異常 'NSInvalidArgumentException',原因是: ' - [__ NSCFData rangeOfCharacterFromSet:]:無法識別的選擇發送到實例 0x147ed0338' *第一擲調用堆棧:(0x180eed900 0x18055bf80 0x180ef461c 0x180ef15b8 0x180df568c 0x186529988 0x185c206f4 0x1000c0194 0x185c17e50 0x185c17dcc 0x185bffa88 0x185c176e4 0x185c17314 0x185c0fe30 0x185be04cc 0x185bde794 0x180ea4efc 0x180ea4990 0x180ea2690 0x180dd1680 0x1822e0088 0x185c48d90 0x1000c4980 0x1809728b8)12月31日1點58分13秒柯蒂斯-iPhone 跳板[15499]:HW KBD:無法設置(空)如鍵盤 焦點12月31日1點58 :13 Curtis-iPhone com.apple.xpc.launchd [1] (UIKitApplication:uDropOff.uDropOff-3 [0x44ca] [18034]): 由於信號退出服務:中止陷阱:6 Dec 31 01:58:13 Curtis iPhone診斷[15528]:無法找到偏移量 0x809679a4在共享緩存中'arch64'Dec 31 01:58:13 Curtis-iPhone ReportCrash [18035]: platform_thread_get_unique_id匹配6392471 Dec 31 01:58:13 Curtis-iPhone ReportCrash [18035]:制定報告 屍體[18034] uDropOff 3 Dec 31 01:58:13 Curtis-iPhone ReportCrash [18035]:保存類型'109_uDropOff 3'報告(最多25個的)/var/mobile/Library/Logs/CrashReporter/uDropOff 3_2015-12-31-015813_Curtis-iPhone.ips Dec 31 01:58:13 Curtis-iPhone SpringBoard [15499]:Application 'UIKitApplication:uDropOff.uDropOff-3 [0x44ca]'墜毀。 12月31日 01:58:13 Curtis-iPhone UserEventAgent [15467]: 20372720635010:id = uDropOff.uDropOff-3 pid = 18034,state = 0 Dec 31 01:58:23 Curtis-iPhone定位[15505]:地點圖標應該 現在處於狀態「無效」

- (void)viewDidLoad 
{ 

    [super viewDidLoad]; 

    keychain = [[KeychainItemWrapper alloc] initWithIdentifier:@"uDropOffLoginData" accessGroup:nil]; 

} 
- (IBAction)viewkeychain { 
    if ([[keychain objectForKey:(id)kSecAttrAccount] isEqual: @""]) 
    { 
     self.username.text = @"nousername"; 
     self.password.text = @"nopassword"; 

    } 
    else 
    { 
    self.username.text = [keychain objectForKey:(id)kSecAttrAccount]; 
    self.password.text = [keychain objectForKey:(id)kSecValueData]; 
    } 


} 
- (IBAction)logout { 
    [keychain resetKeychainItem]; 

} 
    - (IBAction)signin { 
    [keychain setObject:[_username text] forKey:(id)kSecAttrAccount]; 
    [keychain setObject:[_password text] forKey:(id)kSecValueData]; 


} 
+0

發生崩潰時檢查Xcode中的調用堆棧,並告訴我們代碼中崩潰發生的位置。 – jcaron

+0

你能告訴我該怎麼做嗎?我不知道有一種方法可以在應用程序切換器關閉應用程序之後繼續運行,從而與Xcode斷開連接。 –

+0

你能重現嗎?如果可以,你可以嘗試註銷[_username text]和[_password text]的值是什麼,它在我看來這兩個無效 – Surely

回答

0

我有固定的這個代碼我自己,通過改變kSecValueData到kSecAttrService一切工作正常和碰撞吸能不再發生。