NSLogデバッグのときに便利なCGRect→NSStringの変換
移転しました →

NSLogデバッグの良し悪しは置いておくとして、CGRectとかNSDictionaryとかの値をちょっと確認するのにNSLog使ったりしますよね。CGRectの値を確認するときに一生懸命NSLog("%f", rect.size.width)みたいにやってたりマクロ書いたりしていたんですが、もっといい方法があるのを最近知りました。なんてこったい状態。
例えばCGRectではNSStringFromCGRectというメソッドがありまして、これを使うとこんな風に書けるわけです。
CGRect rect = CGRectMake(0, 0, 200, 100); NSLog(@"%@", NSStringFromCGRect(rect)); // {{0, 0}, {200, 100}} と出力される
めちゃ楽ですね。これまでの時間返せっていう。
調べてみたらNSStringFromXXXXX系はこれだけありました。
NSStringFromCGPointNSStringFromCGSizeNSStringFromCGRectNSStringFromCGAffineTransformNSStringFromUIEdgeInsetsNSStringFromUIOffset
じゃあDictionaryやArrayはどうすんの?っていうと、こちらも一気に全ダンプできます。どちらもdescriptionを呼び出すとNSString*に変換してくれるようです。
NSArray* array = @[@"hoge", @"fuga", @"foobar", @[@"hogehoge", @"aaaaaa"]]; NSLog(@"%@", [array description]); NSDictionary* dic = @{@"key1":@"value1", @"key2":@"value2", @"key3":@{ @"innerkey1":@"innervalue1", @"innerkey2":@"innervalue2" } }; NSLog(@"%@", [dic description]); // array ( hoge, fuga, foobar, ( hogehoge, aaaaaa ) ) // dic { key1 = value1; key2 = value2; key3 = { innerkey1 = innervalue1; innerkey2 = innervalue2; }; }
文字列からCGRectへの変換
逆もできます。
先ほどのNSStringFromCGRectで変換された文字列と同じ形式の文字列を用意して、CGRectFromNSStringを使えばCGRectができます!
CGRect rect2 = CGRectFromString(@"{{0, 0}, {320, 568}}");☄
こちらも同じ数ターン用意されていました。
CGPointFromStringCGSizeFromStringCGRectFromStringCGAffineTransformFromStringUIEdgeInsetsFromStringUIOffsetFromString
おわり
こいつらを駆使して楽しましょう!