You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Sep 4, 2026. It is now read-only.
Repository navigation
This repository was archived by the owner on Sep 4, 2026. It is now read-only.
I'm seeing unpredictable behavior with APCKeychain, where APCKeychainStore.stringForKey incorrectly returns an empty value about 1/3 of the time. Where APCKeychainStore incorrectly returns empty values, I can force-close the app and see the correct values returned on subsequent queries.
I'm getting and setting keychain values via Swift, like this:
var email : String {
get {
if let value = APCKeychainStore.stringForKey(kEmailPropertyName) {
return value
}
return ""
}
set {
APCKeychainStore.setString(newValue, forKey: kEmailPropertyName)
}
}
var password : String {
get {
if let value = APCKeychainStore.stringForKey(kPasswordPropertyName) {
return value
}
return ""
}
set {
APCKeychainStore.setString(newValue, forKey: kPasswordPropertyName)
}
}
Are you sure you don't see any keychain-related message logged onto the console at runtime when you get nil from the stringForKey() method? (AppCore should be compiled in Debug for you to see them)
The bug I was mentioning would manifest by APCKeychainStore running this code path, which would print a debug log message on the console and return nil.
There's more info about this issue here. It has been a longstanding keychain issue on iOS, and unfortunately it's quite random.
I see this error when I haven't yet set a passcode:
APC_DEBUG in +[APCKeychainStore dataForKey:service:accessGroup:] at APCKeychainStore.m:105 => SecItemCopyMatching query failed with error code: 4294941996i
But an error is expected there. I haven't recently repro'd the issue of unexpected missing values.
I'm seeing unpredictable behavior with APCKeychain, where APCKeychainStore.stringForKey incorrectly returns an empty value about 1/3 of the time. Where APCKeychainStore incorrectly returns empty values, I can force-close the app and see the correct values returned on subsequent queries.
I'm getting and setting keychain values via Swift, like this: