Xcode(Object-C)初心者です。
学習用に、単純な電卓(入力は、あえてテキストボックスを利用。足し算のみ)にチャレンジしてみました。
テスキトボックスを利用した際の「入力された値」について教えて頂けたら幸いです。
画面配置は以下の通りです。
・テキストボックス(アウトレット「nyuuryoku」とコネクト。入力は数値のみ)
・ボタン(アクショント「tasu」とコネクト)
・ラベル(アウトレット「shutsuryoku」とコネクト)
最初に後述の「TESTViewController.m その1」のソースを記述したところ、警告が出たので「TESTViewController.m その2」に書き換えて実験しました。
警告が消えたのを確認し、テキストボックスに数値の「2」を入力してボタンタッチした場合、以下のように全く想定外の足し算が行われます。
想定していた答え:2(goukeiの初期値 0 + テキストボックスの 2 = 2)
実際の答え:巨大な桁の数値(ポインタが指すアドレスと思われる)
試しに、「TESTViewController.m その3」のソースで実行したところ、きちんとテキストボックスの中身と同じものが表示されました。
ここで疑問が沸きました。
『テキストボックスの値(nyuuryoku.text)は、「ポインタのアドレス」を意味するのか、それとも「中身」を意味するのか?』です。
仮に「ポインタが指すアドレス」を意味する場合は『*((int *) nyuuryoku.text)』で、「中身」を取り出せると思うのですが、この考え方は間違いでしょうか?
また、そもそも考え方が根本的に間違えている場合、テキストボックスに入力された数値を足し算する場合、どのようにすればよろしいのでしょうか?
恥ずかしながら、こんな単純な事を解決するために1週間ほど調べまくりましたが、いまだに解決に至っておりません。
どなたか、ご教授頂けたら幸いです。
================================================
TESTViewController.h
================================================
@interface TESTViewController : UIViewController {
IBOutlet UILabel *shutsuryoku;
IBOutlet UITextField *nyuuryoku;
}
- (IBAction) tasu;
================================================
TESTViewController.m その1
================================================
int goukei = 0;
- (IBAction)tasu
{
goukei = goukei + nyuuryoku.text;
shutsuryoku.text= [NSString stringWithFormat:@"%d",goukei];
[nyuuryoku endEditing:YES];
}
結果:『Assignment makes integer from pointer without a cast;』の警告が出た。
================================================
TESTViewController.m その2
================================================
int goukei = 0;
- (IBAction)tasu
{
goukei = goukei + *((int *) nyuuryoku.text);
shutsuryoku.text = [NSString stringWithFormat:@"%d",goukei];
[nyuuryoku endEditing:YES];
}
結果:ボタンタッチで、アドレスと思われる数値が表示される。
================================================
TESTViewController.m その3
================================================
int goukei = 0;
- (IBAction)tasu
{
shutsuryoku.text = nyuuryoku.text;
[nyuuryoku endEditing:YES];
}
結果:ボタンタッチで、テキストボックスに入れた値が、期待通りに表示される。
No.1ベストアンサー
- 回答日時:
TESTViewController.m その1
goukei = goukei + nyuuryoku.text;
shutsuryoku.text= [NSString stringWithFormat:@"%d",goukei];
UILabelへの入力時に、「stringWithFormat:」を使っているのに、UITextFieldから取り出すときに、「int + NSString」とやっているのは、矛盾だと感じませんでしたか?前者の操作が正しければ、後者も「shutsuryoku.text = goukei」ですむはず。
「NSString *string = @"Any Text"」という書式が誤解を生んでいるように思えますが、NSStringはあくまでもクラスであって、数値ではないことを、お忘れなく。クラスは、構造体などより格段に複雑な構造をしています。あなたは整数値intに、構造体structを代入できると習いましたか?
goukei = goukei + [nyuuryoku.text intValue];
が正しいコードです。
NSString Class Reference
http://developer.apple.com/library/ios/documenta …
なにかわからないことがあったら、Xcodeヘルプから、リファレンスやガイドに目を通すこと。英文だからといって敬遠する向きがあるかと思いますが、中学程度の英語ができていれば、あとはコンピュータ専用用語以外むずかしいことはありません。日本語で書かれていても、コンピュータ専用用語が難しいことに変わりありませんからね。
ご教授ありがとうございました。
「int + NSString」については、矛盾と言うか、、、違和感を感じていました。
しかしながら完全独学のため勉強が足りてなく、この違和感に関してはスルーしていました。
経験不足、、、と言うか勉強不足のため、自分自身の中で答えの方向性を決め付けた上で、試行錯誤していたため、本質を捉えることが出来ていませんでした。
「あなたは整数値intに、構造体structを代入できると習いましたか?」
このご指導のおかげで、頭の中の霧をスッキリとさせることが出来ました。
本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) visual basic初心者です。 visual studioで電卓を作成しています。 実行時にテ 1 2023/02/08 00:18
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- C言語・C++・C# C言語 3 2022/10/04 15:07
- Visual Basic(VBA) ユーザーフォームの書き出しで追加のご相談 ユーザーフォームの値をシートに書き出す際、コードが表示され 2 2022/08/05 10:58
- C言語・C++・C# このプログラミングの問題を教えて欲しいです。 キーボードから整数kを入力し、kが配列aの中に何個存在 2 2022/12/19 22:50
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- その他(Microsoft Office) エクセルのマクロを教えてください。 1 2023/01/27 09:05
- Visual Basic(VBA) VBA 重複チェック後に値をワークシートに転記する方法を教えてください。 1 2023/03/19 12:43
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAでテキストボッ...
-
アクセスできない保護レベルエ...
-
visual basic初心者です。 visu...
-
VBでの入力値制限について
-
コンボボックスからテキストボ...
-
VBでローマ字入力とかな入力を...
-
テキストボックスとカーソルの制御
-
ACCESS 除算での小数点切上げ方法
-
TEXTBOXの表示形式の変...
-
整数かどうかチェックする
-
エクセルVBA チェックBoxと...
-
テキストボックスに大文字を
-
【C#】コンボボックスにおけるS...
-
VBAで入力数値について
-
Googleシート「A1」でなくて「A...
-
定数を構造体で・・・
-
構造体のコピー
-
他のフォームから別のフォーム...
-
VB.NETでのイベントの途中終了
-
リストビューの列ヘッダーの幅...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAでテキストボッ...
-
アクセスできない保護レベルエ...
-
visual basic初心者です。 visu...
-
VBAで入力数値について
-
ユーザーフォームへのデータ入...
-
【VB.NET】テキストボックスに...
-
Excel ユーザーフォームで計算 ...
-
VBでの入力値制限について
-
ACCESS 除算での小数点切上げ方法
-
テキストボックスを空白にする方法
-
【C#】コンボボックスにおけるS...
-
visual studio 2008 C# で、値...
-
TEXTBOXの表示形式の変...
-
テキストボックス1の値に対する...
-
256色で任意の色を作成する時、...
-
VBAのフォーム カーソル移動
-
VBAのユーザーフォームで、テキ...
-
Vba 電卓のテキストボックスに...
-
VBSのプログラム
-
整数かどうかチェックする
おすすめ情報