iPhone アプリケーション
-
はてな touch/Hatena touch
-
LDR touch
-
テレビ番組表/TV Listings
-
LCD Clock by forYou Inc.
-
MyWebClip by forYou Inc.
-
MyWebClip LITE by forYou Inc.
-
Japan Subway Route Map by Studio Heat
-
こころくろっく by AppBank
-
英辞郎 on the WEB for iPhone by アルク
-
i-Radio by i-Radio
-
くるりんぱ性格診断 by 小学館
-
英辞郎検索ランキング(アルク) by アルク
-
kotobank - コトバンク by genesix
-
miil by frogapps
iPad アプリケーション
共著
2011-11-20
KeyChain のデータを操作するラッパークラス UICKeyChainStore を書きました。
アップルのサンプルコード GenericKeychain に含まれる KeyChain のラッパー KeychainItemWrapper.m の実装が微妙だったので書きました。
kishikawakatsumi/UICKeyChainStore ? GitHub
KeychainItemWrapper クラスには下記で報告されている問題や、
A-Liaison BLOG: KeychainItemWrapper を改造して、複数の Keychain Item に同時にアクセス出来るようにしてみた
下記の箇所でメモリーリークする問題があったり、使い勝手もよくないので、そのまま使うのはおすすめしません。
- (void)resetKeychainItem { OSStatus junk = noErr; if (!keychainItemData) { self.keychainItemData = [[NSMutableDictionary alloc] init]; // <= メモリーリークする!
というわけで、あたらしく書いて見ました。
使い方
- リンクするフレームワークに Security.framework を追加します。
- UICKeyChainStore.h と UICKeyChainStore.m をプロジェクトに追加します。
クラスメソッドを使って値を操作する
便利メソッドとしてクラスメソッドを用意してあります。キーと値を指定するだけで簡単に使えます。
サービス名を指定しない場合は自動的に Bundle ID がサービス名になります。
キーと値を指定して値を追加・更新する。
[UICKeyChainStore setString:@"kishikawakatsumi" forKey:@"username"]; [UICKeyChainStore setString:@"password1234" forKey:@"password"]; //=> ["username" = "kishikawakatsumi", "password" = "password1234"]
サービス名を明示的に指定することもできます。
[UICKeyChainStore setString:@"kishikawakatsumi" forKey:@"username" service:@"com.kishikawakatsumi"]; [UICKeyChainStore setString:@"password1234" forKey:@"password" service:@"com.kishikawakatsumi"];
値をキーチェーンから削除するにはキーを指定します。
[UICKeyChainStore removeItemForKey:@"username"]; [UICKeyChainStore removeItemForKey:@"password"];
サービス名を指定していた場合は、サービス名も含めて指定します。
[UICKeyChainStore removeItemForKey:@"username" service:@"com.kishikawakatsumi"]; [UICKeyChainStore removeItemForKey:@"password" service:@"com.kishikawakatsumi"];
KeyChainStore オブジェクトを使って値を操作する
複数の項目を追加・更新する場合は UICKeyChainStore のインスタンスを作成するほうが便利です。
NSUserDefaults のような使い勝手になります。
デフォルトのサービス名 (Bundle ID) の KeyChainStore を作成した場合。
UICKeyChainStore *store = [UICKeyChainStore keyChain]; [store setString:@"kishikawakatsumi@mac.com" forKey:@"username"]; [store setString:@"password1234" forKey:@"password"]; [store synchronize]; // Write to keychain.
サービス名を指定して KeyChainStore を作成した場合。。
UICKeyChainStore *store = [UICKeyChainStore keyChainStoreWithService:@"com.kishikawakatsumi"]; [store removeItemForKey:@"username"]; [store removeItemForKey:@"password"]; [store synchronize]; // Write to keychain.
- 83 http://www.google.co.jp/url?sa=t&rct=j&q=nsdateformatter&source=web&cd=2&sqi=2&ved=0CDUQFjAB&url=http://d.hatena.ne.jp/KishikawaKatsumi/20081121/1227275688&ei=Y-PITuKwEqLLmAXk_dj7Dw&usg=AFQjCNEZ_pUGfxVfgF-G3BxDSXrv4JjZ9A&sig2=ve0-Y0IpHZz0_2xyO
- 46 http://www.google.co.jp/url?sa=t&rct=j&q=dodocase&source=web&cd=5&ved=0CGoQFjAE&url=http://d.hatena.ne.jp/KishikawaKatsumi/20100518/1274149329&ei=gxPJTqXfOdD1mAWKupDbDA&usg=AFQjCNGJNjDi2g7Y9JBSfqJRTJ6DO52-aA
- 42 http://www.google.co.jp/url?sa=t&rct=j&q=uitableviewcell カスタマイズ&source=web&cd=1&ved=0CDAQFjAA&url=http://d.hatena.ne.jp/KishikawaKatsumi/20081024/1224857278&ei=GPLJTo6JIY3NmQWl-Iky&usg=AFQjCNGA
- 36 http://d.hatena.ne.jp/moto_maka/20090220/1235073464
- 36 http://www.donpy.net
- 36 http://www.google.co.jp/url?sa=t&rct=j&q=shouldautorotatetointerfaceorientation センサ&source=web&cd=2&ved=0CDIQFjAB&url=http://d.hatena.ne.jp/KishikawaKatsumi/20090510/1241968017&ei=3azJTuvjBeidmQXE67AL&usg=AFQjCN
- 35 http://www.google.co.jp/url?sa=t&rct=j&q=uitableviewcell&source=web&cd=4&ved=0CEwQFjAD&url=http://d.hatena.ne.jp/KishikawaKatsumi/20081024/1224857278&ei=YYbJTq6KMargmAWHvbEX&usg=AFQjCNGAroNW3Y0yf-_Ks1P_7bQVv9g7IA
- 34 http://www.google.co.jp/url?sa=t&rct=j&q=xcode プロジェクト名 変更&source=web&cd=1&sqi=2&ved=0CB8QFjAA&url=http://d.hatena.ne.jp/KishikawaKatsumi/20100402/1270204243&ei=4hrJTty
- 33 http://www.google.co.jp/url?sa=t&rct=j&q=uinavigationcontroller 戻る&source=web&cd=4&ved=0CDIQFjAD&url=http://d.hatena.ne.jp/KishikawaKatsumi/20091120/1258679168&ei=FObITsuwIYnMmAXe2_EI&usg=AFQjCNGGsmc2o6LsyIldcjlTAtOEhaYsYg
- 29 http://d.hatena.ne.jp/glass-_-onion/20100802/1280758789





















