こういうのを
NSArray *version = [NSArray arrayWithObjects:@"10.5", @"10.6", @"10.7", nil]; NSArray *name = [NSArray arrayWithObjects:@"Leopard", @"Snow Leopard", @"Lion", nil];
@"10.5: Leopard", @"10.6: Snow Leopard", @"10.7: Lion"
こういう感じにしたいときに,いつも
NSMutableArray *a = [NSMutableArray array]; for (int i = 0; i < 3; ++i) { NSString *s = [NSString stringWithFormat:@"%@: %@", [version objectAtIndex:i], [name objectAtIndex:i]]; [a addObject:s]; }
みたいに書いてたけど,一度 NSDictionary に入れてやって,
__block NSMutableArray *a = [NSMutableArray array]; NSDictionary *d = [NSDictionary dictionaryWithObjects:version forKeys:name]; [d enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { NSString *s = [NSString stringWithFormat:@"%@: %@", (NSString *)obj, (NSString *)key]; [a addObject:s]; }];
と書くとスッキリ書ける.
拡張 for が使えなくてなんか嫌やなーと思ってたけど,これならいい感じに書けていいですね.
文字列連携以外にも使えるし.
キャストがあんまりなんで [NSObject description] を使ってもいい.