2015-04-22 51 views
1

我在應用程序中打擊一個相當討厭且虛幻的錯誤。我使用Keychain封裝器UYLPasswordManager在iOS鑰匙串中存儲了一個很長的隨機字符串(> 3200個字符)。看起來像是一段完全隨機的時間段之後,存儲在鑰匙串中的值會以日期字符串的形式返回,而不是最初存儲的長字符串。存儲在鑰匙串中的iOS長字符串獲取隨機損壞

現在,我說它會返回一個日期而不是長字符串的字符串,但它可以很好地返回任何數量的字符串,這是不正確的 - 我只能夠通過調試重現一次,以查看來自鑰匙鏈的錯誤價值。

事情我已經嘗試:

  1. 鑰匙扣包裝,每一個最終表現出的問題,衆說紛紜。
  2. 梳理寫入鑰匙串的代碼的每個字符以確保值不被覆蓋。

除此之外,由於bug的虛幻性,我無法從另一個角度攻擊它,因爲我不知道還有什麼地方可以看。我在鑰匙串中存儲了其他字符串,這些字符串短得多,似乎沒有問題。是否存在已知問題或其他人在將鑰匙串中的長字符串存儲方面具有類似經驗?

我正在使用Swift 1.2(問題預測日期v1.2)和最新的Xcode(穩定)。

編輯:我試圖將字符串拆分成更小的塊,並將它們分別保存在鑰匙串中,以查看是否存在隨時間推移而損壞或丟失的數據。我會在這裏發佈結果。

編輯:自從我把字符串分成許多小部分以來,我還沒有看到這個問題。我將等待另一週,然後再使用此方法確認問題已解決。另外,我計劃向蘋果提交一份錯誤報告。

回答

2

對於其他存在一個很長的字符串的問題的人來說,它似乎把字符串分成許多部分,存儲較小的塊已經解決了這個問題。希望它可以幫助別人!