• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Objective-Cでのエラー)

Objective-Cでのエラー

このQ&Aのポイント
  • Xcode5で始めるObjective-Cプログラミング(大津真著)を購入し、Objective-Cの勉強を開始しました。しかし、本に記載されたコードを入力するとエラーが発生し困っています。
  • エラーメッセージは「more '%' conversions than data arguments」で、2つの箇所で表示されます。解決策をご教示いただけますか。
  • また、実行すると「Thread 1:EXC_BAD_ACCESS(code=EXC_1386_GPFLT)」というエラーも発生します。このエラーについてもお力をお貸しください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

> 何度も見なおしたのですが本との違いを見つけることができませんでした。 その参考本の内容は見たことないですが、先月発売されたばかりのようで、 もし本にミスプリントがあるなら見よう見まねの初心者には難しいと思うので、 具体的な正誤を書いておきます。 (誤) NSLog(@"%@ 生年月日:%@, 身長:%.1fcm"), [personA name], [personA birthday], [personA height]; (正) NSLog(@"%@ 生年月日:%@, 身長:%.1fcm", [personA name], [personA birthday], [personA height]); (誤) NSLog(@"%@ 生年月日:%@, 身長:%.1fcm"), [personB name], [personB birthday], [personB height]; (正) NSLog(@"%@ 生年月日:%@, 身長:%.1fcm", [personB name], [personB birthday], [personB height]); こうでなければならない理由は、No.2さんの回答や おそらくその本の中でも解説されているNSLog()の 説明を参照してください。 できれば、今後同じ所でつまずいて、同じようにここに助けを求める人の ために、本当に本の記述が誤っていたのか、それともあなたが自分の タイプミスを見つけることができなかっただけなのかを補足かお礼に 入れてください。 なお、こういう誤りはNSLogの意味とその使い方を理解していれば、 たとえ本の記述が誤っていてもすぐにわかるレベルのものです。 コーディング自体が初めての人は、まずは写経のように人が書いた コーディングを書き写して体験するところから始めるしかないと 思いますが、できるだけその意味を理解しながら写経することを お勧めします。意味がわかっていれば、くだらないタイプミスも 一目でわかるようになります。

unitty
質問者

お礼

私のタイプミスで、まさにご提示いただいた通りの記述が本にもありました。かなり見なおしたつもりだったのですが見つけられず、おっしゃる通り意味を理解しながらという部分が不足しているのだと思います。今後は書き写す前にもっとよく見て理解する時間を多くとるようにしたいと思います。 わかりやすい正誤比較、本当に助かりました。ありがとうございました。

その他の回答 (2)

  • harawo
  • ベストアンサー率58% (3742/6450)
回答No.2

C言語のprintf()関数の書式は、おわかりですか?ご存じなければ、そこまで戻って、勉強しなおしてください。 NSLog()の書式は、printf()の書式と(ほぼ)同じ。 %は、変換指定しといって、%のある場所を、引数の値と置換します。 printf("number = %d, string = %s\n", 256, "Hello"); 第一引数の文字列の中、「%d」を、第2引数の「256」と置換し、「%s」を、第3引数の「Hello」と置換します。 結果出力:"number = 256, string = Hello" NSLog()も同様です。 変換指定子は、変数の型とセットになっていて…… %d =int型整数 %s =文字列 という対応になっています。ほかにいくつか例を挙げておくと…… %f =float型浮動小数点数 %x =16進表記整数 %@は、Objective-Cのみの変換指定子で、NSString型文字列と対応します。 NSLog(@"string = %@", @"Hello"); 結果出力:string = Hello エラーメッセージの意味は、変換指定子と、引数の数が一致しないというもの。第2引数以降がなければ、一致しないのはとうぜん。

unitty
質問者

お礼

C言語を元にして基本的なことから教えていただき、ありがとうございます。基本的なことをよく理解しながら学んでいきたいと思います。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

閉じ括弧の位置が変.

unitty
質問者

お礼

他の方の回答で理解した後に読むと、ご指摘いただいた通りでした。ありがとうございました。

関連するQ&A

専門家に質問してみよう