

初心者です。swiftで簡単なおみくじアプリを作っています。  
ViewController.swiftに

[code]

    import UIKit
    
    class ViewController: UIViewController {
        @IBOutlet var uranau: UIButton!
        @IBAction func Uranau(sender: UIButton) {
        }
    
        @IBAction func uranau(sender: UIButton) {
            var kekka = " "
            var kazu = arc4random_uniform(5)
            switch kazu {
            case 4:
                kekka = "大吉"
            case 3:
                kekka = "中吉"
            case 2:
                kekka = "小吉"
            case 1:
                kekka = "吉"
            case 0:
                kekka = "凶"
            default:
                kekka = "エラー"
    
            }
            kekka.text=kekka
        }
    
[/code]

と記載したら kekka.text=kekkaのところでエラーが出ました。  
print()を使ったらよかったですか？  
何が間違っているのかわかりません。


CC BY-SA 3.0
2016-06-28T02:23:11.473
27122
2016-06-28T12:17:25.987
14754
question
swift
case文のテキスト表示

[code]

    var kekka = " "
    
[/code]

という変数宣言がされていますから、kekkaのデータ型はStringです。（推測に基づく型）  
kekkaはオブジェクトではないので、kekka.text というような使い方をするのは間違いです。

ところで、Yunさんは下記の行で、何が起こることを期待したのですか？ 何がしたいのかが質問に書かれていないので、助言をすることが出来ません。  
kekka.text=kekka


CC BY-SA 3.0
2016-06-28T05:13:50.470
27128
2016-06-28T05:13:50.470
217
27122
answer


> kekka.text=kekkaのところでエラーが出ました。  
>  print()を使ったらよかったですか？  
>  何が間違っているのかわかりません。
[code]

    var kekka = ""
    
[/code]

と宣言しているので変数「kekka」はString型の変数になっています。  
switch文の中で

[code]

    kekka = "大吉"
    
[/code]

と代入しているので改めて代入する必要もありません。

結果を表示したいのであれば

[code]

    print(kekka)
    
[/code]

で表示できます。


CC BY-SA 3.0
2016-06-28T05:17:16.547
27129
2016-06-28T05:17:16.547
16765
27122
answer


他の方が`print`を使って(デバッグ用コンソールに)表示する方法を回答されていますので、ここでは画面に結果を出したい場合のお話を。

[code]

    {あるオブジェクト}.text = {文字列}
    
[/code]

と言う形の式で結果を表示したければ、`{あるオブジェクト}`は以下のようになっていないといけません。

(A) `text`というプロパティを持つこと  
(B) そのプロパティの内容を表示できるオブジェクトであること  
(C) そのオブジェクトの表示内容が画面に反映される状態になっていること

あなたのコードの中で`{あるオブジェクト}`の位置に書いてある`kekka`には`String`型のインスタンスが入っていますが、それは上の(A)〜(C)のどれも満たしません。結果を画面上に表示したければ、表示を司るオブジェクトを追加し、そのオブジェクトに対して`{あるオブジェクト}.text
= {文字列}`を実行しないといけません。

(1)
InterfaceBuilder(Xcodeのstoryboardエディター)上で、この`ViewController`用の画面に結果表示用の`UILabel`を追加する。

(2) `ViewController`に新しい`@IBOutlet`を追加する。

[code]

    @IBOutlet var kekkaLabel: UILabel!
    
[/code]

(3) InterfaceBuilderでこの`@IBOutlet`と(1)の`UILabel`を結びつける。

(4) 結果表示用の行が上の`kekkaLabel`を操作するように書き直す。

[code]

        kekkaLabel.text = kekka
    
[/code]

* * *

このあたりで「何が間違っているのかわかりません」と言う状態なのでしたら、再度しっかりとプログラミングの基本から復習することをお勧めします。


CC BY-SA 3.0
2016-06-28T12:17:25.987
27142
2016-06-28T12:17:25.987
13972
27122
answer