質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

1076閲覧

swiftでstructでStringの使い方がよくわからないので教えてください

KTH

総合スコア86

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

1グッド

1クリップ

投稿2019/02/14 09:36

編集2019/02/15 03:51

swiftでstructを使ってゲームキャラクターのステータスを作ろうと考えています
そこで、今試している最中なのですが、structでステータスの種類を作り、そこにランダムで値を与えようとしているのですが名前をランダムで作ることができません

.randamElementを試しているのですが、Stringの値にするにはどうすればいいか教えてください

 

import UIKit class ViewController: UIViewController { struct bo { var name:String var firstname:String // 名前名字 var age:Int // 年齢性別出身地 init(name:String,firstname:String,age:Int) { self.name = name self.firstname = firstname self.age = age } } var aa = bo(name: "A", firstname: "A", age: 12) var namelist:[String] = ["kim","bob","lynn"] // 名前リスト var firstNamelist:[String] = ["brown","miller","wilson"] // 名字リスト @IBOutlet weak var nameLabel: UILabel! @IBOutlet weak var firstNameLabel: UILabel! @IBOutlet weak var resultLabel: UILabel! @IBOutlet weak var ageLabel: UILabel! @IBAction func dooo(_ sender: Any) { bo(name: <#String#>, firstname: <#String#>, age: <#Int#>) nameLabel.text = bo.name firstNameLabel.text = bo.firstname ageLabel.text = String(Int.random(in: 1 ... 10)) resultLabel.text = "名字は(bo.firstname)で名前は(bo.name)で年齢は()歳" // ボタンを押したらランダムに名字と年齢が生成されにresultLabelにも表示される } override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. } }

.randamElement()で名前リストと名字リストをシャッフルしてstuctでつくったboのそれぞれnameとfirstnameのなかに入れたいのですがどうすればいいのですか?

以下がシャッフルでやってみたやつです

import UIKit struct status { var name:[String] = [] var firstName:[String] = [] var age:Int init() { name = ["alex","kim"] firstName = ["elliot","miller"] age = 1 } } var naa = status() class ViewController: UIViewController { @IBOutlet weak var nameLabel: UILabel! @IBOutlet weak var firstNameLabel: UILabel! @IBOutlet weak var resultLabel: UILabel! @IBOutlet weak var ageLabel: UILabel! @IBAction func dooo(_ sender: Any) { // 以下名前 naa.name.shuffle() nameLabel.text = naa.name.first // 以下名字 naa.firstName.shuffle() firstNameLabel.text = naa.firstName.first ageLabel.text = String(Int.random(in:1...10)) // ボタンを押したらランダムに名字と年齢が生成されresultLabelにも表示される resultLabel.text = String(nameLabel.text! + firstNameLabel.text!) } override func viewDidLoad() { super.viewDidLoad() naa.name.append("jake") // ここで名前を追加できる naa.firstName.append("sss") // ここで名字を追加 // Do any additional setup after loading the view, typically from a nib. } }
DrqYuto👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

DrqYuto

2019/02/14 09:41

コードを``` で囲むと見やすくなりますよ
MasakiHori

2019/02/15 00:01

randomElementを試しているとのことですが、randomElementを使用している箇所が見受けられません どのように試してみたのでしょうか?
KTH

2019/02/15 03:50

ストラクトの使い方がよくわからなかったので、<#String#>のところにそれぞれのrandomElement()の文?を入れれば良いのかと考えていたのですができませんでした じぶんなりにshuffle()やってみたのを貼っておきます
fuzzball

2019/02/15 03:58

これ質問内容にstructは関係があるのでしょうか?
fuzzball

2019/02/27 01:18

解決したのであればcloseして下さい。
guest

回答1

0

ベストアンサー

randomElement()は戻り値がオプショナル型なので、オプショナルをアンラップする必要があります。

以下、Playgroundの実行例です。

swift:

1import UIKit 2 3struct bo { 4 var name: String 5 var firstname: String 6 var age: Int 7 8 init(name: String, firstname: String, age: Int) { 9 self.name = name 10 self.firstname = firstname 11 self.age = age 12 } 13} 14 15var namelist = ["kim", "bob", "lynn"] 16var firstNamelist = ["brown", "miller", "wilson"] 17 18let hoge = bo(name: namelist.randomElement()!, firstname: firstNamelist.randomElement()!, age: 12) 19print("名字は(hoge.firstname)で名前は(hoge.name)") // 名字はmillerで名前はkim

投稿2019/02/18 08:25

takabosoft

総合スコア8356

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問