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系はこれだけありました。
NSStringFromCGPoint
NSStringFromCGSize
NSStringFromCGRect
NSStringFromCGAffineTransform
NSStringFromUIEdgeInsets
NSStringFromUIOffset
じゃあ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}}");☄
こちらも同じ数ターン用意されていました。
CGPointFromString
CGSizeFromString
CGRectFromString
CGAffineTransformFromString
UIEdgeInsetsFromString
UIOffsetFromString
おわり
こいつらを駆使して楽しましょう!