回答:
XcodeデバッガーでNSDictionary変数の内容を表示する方法を確認してください。
私も使用しています
po variableName
print variableName
コンソールで。
あなたの場合、実行することが可能です
print [myData objectAtIndex:indexPath.row]
または
po [myData objectAtIndex:indexPath.row]
po obj
迅速ではありますpo print(obj)
。
開発環境としてのXcodeに変数をデバッグする簡単な方法を含める必要があるという他のポスターにも同意します。ええと、良い知らせがあります。
Xcodeで変数をデバッグする方法に関する簡単な答え/チュートリアルを検索して見つけなかった後、私はXcode自体を探索しに行ったところ、これが(少なくとも私にとっては)非常に有用な発見でした。
Xcodeのメイン画面で、スクリーンショットに表示されている右上隅のボタンをクリックして、下部のデバッグ領域が表示されていることを確認します。
次に、ブレークポイントを設定します。コード領域の境界線をクリックして、プログラムを一時停止するコード内の行です。
次に、デバッグ領域でこのボタンを探し、中央のボタンをクリックします。エリアが2つに分割されていることに気づくでしょう。
次に、アプリケーションを実行します。
プログラムの実行中に最初のブレークポイントに到達すると、左側にそのブレークポイントで使用可能なすべての変数が表示されます。
変数の左矢印を展開すると、詳細を確認できます。また、検索フィールドを使用して必要な変数を分離し、ブレークポイントのスコープに「ステップイン」すると、リアルタイムで変化することがわかります。
デバッグ領域の右側で、目的の変数の上でマウスの右ボタンをクリックして、変数を送信し、必要に応じて変数を印刷できます。
ご覧のとおり、このコンテキストメニューには、非常に興味深いデバッグオプションがたくさんあります。以下のようなウォッチすでに入力したコマンド、あるいはと示唆されている値の編集...あなたの変数の実行時の値を変更します!
また、次のこともできます。
私見少し隠されて面倒...
混乱は、宣言されたプロパティが(インスタンスと同じ)変数ではない(必ずしも同じ名前である)ことに起因します。
表現
indexPath.row
に相当
[indexPath row]
そして割り当て
delegate.myData = [myData objectAtIndex:indexPath.row];
に相当
[delegate setMyData:[myData objectAtIndex:[indexPath row]]];
合成プロパティの標準的な命名を想定しています。
さらに、delegate
はおそらく型であると宣言されid<SomeProtocol>
ています。つまり、コンパイラはdelegate
その時点では実際の型情報を提供できず、デバッガはコンパイル時に提供される情報に依存しています。id
はジェネリック型なので、のインスタンス変数に関するコンパイル時の情報はありませんdelegate
。
これらが、変数が表示されない、myData
またはrow
変数として表示される理由です。
-row
またはの送信結果を確認する場合は-myData
、コマンドp
またはを使用できますpo
。
p (NSInteger)[indexPath row]
po [delegate myData]
または、式ウィンドウを使用します(たとえば、delegate
実際のタイプMyClass *
であることがわかっている場合は、式を追加する(MyClass *)delegate
か、を右クリックしてdelegate
、View Value as…
実際のタイプdelegate
(例:)を選択して入力しますMyClass *
。
そうは言っても、デバッガーがもっと役立つ可能性があることに同意します。
コンパイル時の情報の代わりに実行時の型情報を使用するようにデバッガウィンドウに指示するオプションがある場合があります。デバッガは遅くなりますが、便利な情報が得られます。
宣言されたプロパティは、プロパティと呼ばれるグループに表示され、デバッガーウィンドウで直接(オプション)検査を行うことができます。これは、情報を取得するためにメッセージを送信したり、メソッドを実行したりする必要があるため、デバッガーの速度を低下させますが、有用な情報も提供します。
実行時に値をコンソールウィンドウに出力できます。以下はステップです:
これは少し複雑になります。これらのオブジェクトはカスタムクラスまたは構造体であり、Xcodeでは他の開発環境ほど簡単には見えません。
私があなただったら、私はあなたが見たい値をNSLogして、いくつかの説明を付けたいと思います。
つまり:
NSLog(@"Description of object & time: %i", indexPath.row);