※ ChatGPTを利用し、要約された質問です(原文:Xcodeのテキストボックスの値について)
Xcodeのテキストボックスの値について
このQ&Aのポイント
Xcode(Object-C)初心者です。学習用に、単純な電卓にチャレンジしてみました。テキストボックスを利用した際の「入力された値」について教えて頂けたら幸いです。
テキストボックスの値は、「ポインタのアドレス」を意味するのか、「中身」を意味するのか疑問です。仮に「ポインタが指すアドレス」を意味する場合は、間違いでしょうか?また、テキストボックスに入力された数値を足し算する場合、どのようにすればよいのでしょうか?
解決に至るまでに1週間ほど調べていますが、解決策が見つかっていません。どなたか教えていただけると助かります。
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];
}
結果:ボタンタッチで、テキストボックスに入れた値が、期待通りに表示される。
お礼
ご教授ありがとうございました。 「int + NSString」については、矛盾と言うか、、、違和感を感じていました。 しかしながら完全独学のため勉強が足りてなく、この違和感に関してはスルーしていました。 経験不足、、、と言うか勉強不足のため、自分自身の中で答えの方向性を決め付けた上で、試行錯誤していたため、本質を捉えることが出来ていませんでした。 「あなたは整数値intに、構造体structを代入できると習いましたか?」 このご指導のおかげで、頭の中の霧をスッキリとさせることが出来ました。 本当にありがとうございました。