［iOS］［デバッグ用］どんなオブジェクト型でも文字列で表現する方法

##どんなオブジェクト型でも文字列で表現する方法

```Objective-C:Convert.m

+ (NSString *)objectConvertString:(id)object
{
    NSString *objectConvertString = @"";
    if (object) {
        //NSDictionary型の場合
        if ([object isKindOfClass:[NSDictionary class]]) {
            objectConvertString = [objectConvertString stringByAppendingFormat:@"\n[%@]\n%@",NSStringFromClass([object class]),[self dictionaryConvertString:object]];
        }
        //NSArray型の場合
        else if ([object isKindOfClass:[NSArray class]]) {
            objectConvertString = [objectConvertString stringByAppendingFormat:@"\n[%@]\n%@",NSStringFromClass([object class]),[self arrayConvertString:object]];
        }
        //それ以外の場合
        else {
            objectConvertString =
            [objectConvertString stringByAppendingFormat:@"%@ : (class : %@)\n",
             object,
             NSStringFromClass([object class])
             ];
        }
    } else {
        objectConvertString = @"nil\n";
    }
    return objectConvertString;
}

///NSDictionary型の場合
+ (NSString *)dictionaryConvertString:(NSDictionary *)dictionary
{
    NSString *dictionaryConvertString = @"";
    if (dictionary && [[dictionary allKeys] count] > 0) {
        for (NSString *key in [dictionary allKeys]) {
            if ([dictionary[key] isKindOfClass:[NSDictionary class]]) {
                dictionaryConvertString = [dictionaryConvertString stringByAppendingFormat:@"\n[%@]\n%@",NSStringFromClass([dictionary class]),[self dictionaryConvertString:dictionary[key]]];
            } else if ([dictionary[key] isKindOfClass:[NSArray class]]){
                dictionaryConvertString = [dictionaryConvertString stringByAppendingFormat:@"\n[%@]\n%@",NSStringFromClass([dictionary class]),[self arrayConvertString:dictionary[key]]];
            } else {
                dictionaryConvertString =
                [dictionaryConvertString stringByAppendingFormat:@"[%@] = %@",
                 key,[self objectConvertString:dictionary[key]]
                 ];
            }
        }
    } else {
        dictionaryConvertString = @"()";
    }
    return dictionaryConvertString;
}

///NSArray型の場合
+ (NSString *)arrayConvertString:(NSArray *)array
{
    NSString *arrayConvertString = @"";
    NSInteger count = [array count];
    if (array && [array count] > 0) {
        for (id object in array) {
            arrayConvertString = [arrayConvertString stringByAppendingFormat:@"\n[%d] : ",(int)([array count] - count)];

            arrayConvertString = [self objectConvertString:object];
            
            count--;
        }
    } else {
        arrayConvertString = @"[]";
    }
    return arrayConvertString;
}
```
必要なときに表現方法は自由に変えてみてください。


## 関連記事

【About】(http://qiita.com/sunstripe) - サンストライプ

---

## 制作チーム：サンストライプ

[![sunstripe_logo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80600/322f2d60-f19d-af9e-2b6f-7290ca546848.png)](http://sunstripe.main.jp/)
http://sunstripe.main.jp/

(月１WEBコンテンツをリリースして便利な世の中を作っていくぞ！！ボランティアプログラマー/デザイナー/イラストレーター/その他クリエイター声優募集中！!)

### 地域情報 THEメディア
THE メディア 地域活性化をテーマに様々なリリース情報も含め、記事をお届けしてます！！
https://the.themedia.jp/

### ゼロからはじめる演劇ワークショップ
多様化の時代に向けて他者理解を鍛える

https://workshop.themedia.jp/

### プログラミングワークショップ・ウェブ塾の開講！！！
様々なテーマでプログラミングに囚われずに取り組んでいきます。
詳しくはこちら　↓　↓　↓　↓　↓　↓　↓　↓
[プログラミングサロン 月１だけのプログラミング学習塾](https://workshop.themedia.jp/posts/7057553?fbclid=IwAR32CfRQ7RvDOhvuogoSwqxDLMOU7Jvuzljlnx-TMc27qBPX1BnWsfLcBR8
)

### 協力応援 / 支援者の集い
## チーム：サンストライプ
#### プログラミングラボ
https://twitter.com/sunstripe2011

一緒にポートフォリオを作りませんか？現場の体験やそれぞれの立場から年齢関係なく作品を作りたい方々と一緒にチームを作って、作品を作っています。現場に行きたい人には、職場紹介や職場の体験や悩み相談なども受けております。
様々な職種からプログラミングの知識を得たい、デザインの知識を得たい、データーベースの知識を得たいという人が集まっております。
週１のミーティングにそれぞれの近況と作業報告して、たまにリモート飲み会などをしております！！

興味がある方は、DMに話しかけてみてください。

## トラストヒューマン
http://trusthuman.co.jp/
私たちは何よりも信頼､人と考えてます｡

｢コンサルティング｣と｢クリエイティブ｣の両角度から｢人材戦略パートナー｣としてトータル的にサポートします！！

キャリア教育事業
広域学習支援プラットフォーム『のびのび日和』
https://slc-lab.amebaownd.com/