Photo by : tswicegood
Xcode4で作ったplistが、従来のコードだと読めなくなっていたので、読めるコードを備忘録としてメモっておくます。
どうやら、plistが、NSArray型からNSDictionary型になっとるらしい。
NSString* path = [[NSBundle mainBundle] pathForResource:@"data" ofType:@"plist"]; NSArray *array = [NSArray arrayWithContentsOfFile:path];
Xcode3でつくったplistは上のコードで読めたのですが、Xcode 4からは、なんか<dict>が入るようになり読み込めなくなってました。
Xcode4でplistを作成すると、最上位階層が<dict>となるためだ。最上位階層がNSDictionaryとなるため、[NSArray arrayWithContentsOfFile:path]; では読み込めない。
iPhoneアプリ開発備忘録さんの方法は、<dict>タグを削除するという方法なのですが、なぜか僕の場合上手くいかないのと、あんまし.plistを作ることもないから、削除しなければならないことを忘れてしまいそうなので、Xcode 4が作った.plistをそのまま読み込めるコードを書いてみました。
NSString* path = [[NSBundle mainBundle] pathForResource:@"data" ofType:@"plist"]; NSDictionary* dictionary = [NSDictionary dictionaryWithContentsOfFile:path]; NSArray *array = [NSArray arrayWithArray:[plist objectForKey:@"key"]];
まぁ、Xcode 4からplistは、NSArray型からNSDictionary型になってしまったので、いったんNSDictionaryで読んでから、NSArrayに置き換えているだけなんですけどね(;´∀`)
NSString* path = [[NSBundle mainBundle] pathForResource:@"data" ofType:@"plist"]; NSDictionary* dictionary = [NSDictionary dictionaryWithContentsOfFile:path]; NSString *str = [dictionary objectForKey:[plist objectForKey:@"key"]];
もちろん、plist内のkeyのtypeがNSString型だったりしたら、NSStringで読み込んでやればいいだけです。
なんか1行増えてしまうのがアレなんですけど、僕と同じ感じで困っていた方の参考になればこれ幸い。
【関連】UIAlertView+UITextField表示中に通知が来た場合、キーボードの裏に隠れてしまうバグの修正方法
【関連】先日書いた"はてブ数"をテキスト表示するJavaScriptがカッチョ悪かったのでシンプルに書きなおしてみた