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

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

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

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

Q&A

1回答

1083閲覧

Swift初心者。独学で配列のランダム表示・別ページでの配列の中身の削除を実装し、データを反映させたいです。

Ryotaman

総合スコア10

Swift

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

0グッド

0クリップ

投稿2018/12/27 02:52

前提・実現したいこと

swift4.0で配列の1つをランダムで表示させるシステムを作っています。
また配列の中身を別のコントローラーで削除して反映させるようにしたいです。
データを写すとString型からInt型への変更と、データの受け渡しで苦戦しております。

発生している問題・エラーメッセージ

エラーメッセージ Cannot assign value of type '[String]' to type 'String' 'subscript' is unavailable: cannot subscript String with an Int, see the documentation comment for discussion

該当のソースコード

ソースコード import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. display.text = "PUSH START TO PLAY" } @IBOutlet weak var display: UILabel! @IBOutlet weak var stanceLabel: UILabel! var stance = ["SWITCH", ""] @IBOutlet weak var approachLabel: UILabel! let approach = ["FRONTSIDE", "BACKSIDE"] @IBOutlet weak var spinLabel: UILabel! var recieveValue = "" @IBOutlet weak var grabLabel: UILabel! let grab = ["INDY", "MUTE", "STALE", "MELON"] @IBAction func startButton(_ sender: Any) { stanceLabel.text = stance[Int(arc4random()) % stance.count] approachLabel.text = approach[Int(arc4random()) % approach.count] spinLabel.text = recieveValue[Int(arc4random()) % recieveValue.count] print(recieveValue) grabLabel.text = grab[Int(arc4random()) % grab.count] } } ※下記より2つめのビュー import UIKit class SettingViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return(spin.count) } var spin = ["180", "360", "540", "720", "900", "1080", "1260", "1440"] @IBOutlet weak var spinTable: UITableView! override func viewDidLoad() { super.viewDidLoad() spinTable.delegate = self spinTable.dataSource = self // Do any additional setup after loading the view. } func tableView(_ tableView: UITableView, didUpdateFocusIn context: UITableViewFocusUpdateContext, with coordinator: UIFocusAnimationCoordinator) { print(spin.count) } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = UITableViewCell(style: UITableViewCell.CellStyle.default, reuseIdentifier: "spinCell") cell.textLabel?.text = spin[indexPath.row] return(cell) } func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { } func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) { //表示されたDeleteをタップしたか print(indexPath.row) spin.remove(at: indexPath.row) tableView.deleteRows(at: [indexPath], with: .fade) } override func prepare(for segue: UIStoryboardSegue, sender: Any?) { //遷移先のViewControllerを取得 let ViewController = segue.destination as! ViewController ViewController.recieveValue = spin } /* // MARK: - Navigation // In a storyboard-based application, you will often want to do a little preparation before navigation override func prepare(for segue: UIStoryboardSegue, sender: Any?) { // Get the new view controller using segue.destination. // Pass the selected object to the new view controller. } */ }

試したこと

ググった変更方法は試しましたが、なかなかうまくいきません。
まだ独学で1週間ほどしか行なっていないので、理解も浅いです。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

var recieveValue = ""

var recieveValue = String

にしてください。

#でもこれだと設定した値もランダムで出ちゃうような・・・

投稿2018/12/27 02:59

編集2018/12/27 03:02
takabosoft

総合スコア8356

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

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

Ryotaman

2018/12/27 03:16

回答ありがとうございます。 Thread 1: Fatal error: Division by zero in remainder operation というエラーに変わりました。配列の中身がまだうまく行ってませんね。
takabosoft

2018/12/27 06:52

0で割り算または%している所がないか確認して修正してください。エラーはそのままググるかgoogle翻訳すれば判ることが多いですよ。
MasakiHori

2018/12/27 09:41

recieveValue[Int(arc4random()) % recieveValue.count] これが問題なのでSwift4.2にしてrandomElement()使っちゃうほうがいいですよ
Ryotaman

2019/01/04 07:26

回答ありがとうございます。 randomElement()で試してみます! まだデータ受け渡しがString型が邪魔してうまくいかないので、試行錯誤してみます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問