Skip to main content

Save value in keychain - iOS application

Login and sign up activity is very common in every ios application. Most of the applications follow single sign in process. Single sign in means user have to login only once. Generally developers tend to save values(username, password) in user default. When user delete the application, the values stored in the NSUserDefault also vanishes, then user have to sign in again.

Alternative to NSUserDefault, which save values permanently in keychain:-

  1. Grab the four files (.h and .m) PDKeychainBindingsController folder and add them to your xCode project.
  2. Import the header file. #import "PDKeychainBindings.h"

Set object:-
        [[PDKeychainBindings sharedKeychainBindings] setObject:@"Pardeep" forKey:@"key_name"];

Get object from key:-

            NSString *folderPath=[[PDKeychainBindings sharedKeychainBindings] objectForKey:@"key_name"];

Remove object:
            [[PDKeychainBindings sharedKeychainBindings] removeObjectForKey:@"key_name"];


  • If you are getting any keychain access error or SecItemAdd and SecItemCopyMatching returns error code -34018, then follow this answer:-
  • keychain API only work with Strings



Post a Comment

Popular posts from this blog

How to kill/exit iOS application on a button click programmatically

I had been practising below code to kill an iOS application. exit(0); But last week, my application was rejected by app store due to following reason: We found that your app includes a UI control for quitting the app. This is not in compliance with the iOS Human Interface Guidelines, as required by the App Store Review Guidelines . To avoid any such rebuff, suspend the application using following code snippet. UIApplication.shared.perform(#selector(NSXPCConnection.suspend)) Good news is that now my application is passed the  iOS Human Interface Guidelines and live on app store.

Return multiple values from a function in objective C

We can return tuples in swift as follows:- func getData () -> ( Int , Int , Int ) { //...code here return ( hour , minute , second ) } You can't do that in objective-c. Best option is using parameters by reference . Something like this. - ( void ) getHour :( int *) hour minute :( int *) minute second :( int *) second { * hour = 1 ; * minute = 2 ; * second = 3 ; } And use it like this. int a , b , c ; [ self getHour :& a minute :& b second :& c ]; NSLog (@ "%i, %i, %i" , a , b , c );