Skip to Content
iOS 7 Programming Cookbook
book

iOS 7 Programming Cookbook

by Vandad Nahavandipoor
October 2013
Intermediate to advanced
1053 pages
28h 7m
English
O'Reilly Media, Inc.
Content preview from iOS 7 Programming Cookbook

8.4. Updating Existing Values in the Keychain

Problem

You have already stored a value in the keychain but now want to update it to a new value.

Solution

Given that you have been able to find the value in the keychain (see Recipe 8.3), you can issue the SecItemUpdate function with your query dictionary as its first parameter and a dictionary describing the change that you want to make to the existing value as its second parameter. Usually this update dictionary (the second parameter to the method) contains just one key (kSecValueData) and the value of this dictionary key is the data to set for the existing key in the keychain.

Discussion

Let’s assume that, following the advice given in Recipe 8.2, you have stored the string Steve Jobs with the key of Full Name in your app’s keychain but want to update that value now. The first thing that you have to do is find out whether the existing value is already in the keychain. For that, construct a simple query, as we have seen earlier in this chapter:

NSString *keyToSearchFor = @"Full Name";
NSString *service = [[NSBundle mainBundle] bundleIdentifier];

NSDictionary *query = @{
        (__bridge id)kSecClass : (__bridge id)kSecClassGenericPassword,
        (__bridge id)kSecAttrService : service,
        (__bridge id)kSecAttrAccount : keyToSearchFor,
        };

Then query for that dictionary and see whether you can find the existing item in the keychain:

OSStatus found = SecItemCopyMatching((__bridge CFDictionaryRef)query,
                                       NULL);

Note

You don’t necessarily have to check for an existing ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

iOS 4 Programming Cookbook

iOS 4 Programming Cookbook

Vandad Nahavandipoor
iOS 6 Programming Cookbook

iOS 6 Programming Cookbook

Vandad Nahavandipoor

Publisher Resources

ISBN: 9781449372446Errata Page