#recordArrayを別のViewControllerに移そうとしたとろ下記のようなエラーが出てしまいました。構造体の配列は異なるViewContoroller間ではやり取りできないのでしょうか。ご回答感謝します。
error
1Cannot assign value of type '[ViewController.recordStruct]' to type '[recordViewController.recordStruct2]'
ViewController
1struct recordStruct { 2 var record : Double = 0.0 3 var recordtmp : Double = 0.0 4} 5 6var recordArraydepo = [Double]() 7 8var recordArray = [recordStruct]() 9 10for i in recordArray { 11 recordArraydepo.append(recordArray[i].record as! [Double]) 12} 13 14override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 15 if segue.identifier == "next"{ 16 let recordVc : recordViewController = segue.destination as! recordViewController 17 recordVc.recordArray2 = recordArray //エラー 18 } 19 }
recordViewController
1struct recordStruct2 { 2 var record : Double = 0.0 3 var recordtmp : Double = 0.0 4 } 5 6 var recordArray2 = [recordStruct2]() 7
###すべてのコードは下記の通りです。
ViewController
1 2import UIKit 3 4class ViewController: UIViewController { 5 6 @IBOutlet var buttonLabel: UILabel! 7 @IBOutlet var timerSecond: UILabel! 8 @IBOutlet var timerMSecond: UILabel! 9 @IBOutlet var gameButton: UIButton! 10 @IBOutlet var recordLabel: UILabel! 11 12 var timer : Timer! 13 14 var startTime = TimeInterval() //開始した時間 15 16 var currentTime = TimeInterval() //停止した時間 17 18 var time = TimeInterval() //currentTime - startTime 19 20 21 22 struct recordStruct { 23 var record : Double = 0.0 24 var recordtmp : Double = 0.0 25 } 26 27 //var recordstruct : recordStruct 28 var recordArray = [recordStruct]() 29 30 31 32 var recordArraydepo = [Double]() 33 34 var count = 0 35 36 override func viewDidLoad() { 37 super.viewDidLoad() 38 } 39 40 41 42@IBAction func gameButton(_ sender: Any) { //ゲームボタンが押された時 43 44 if count == 0{ //押すのが1回目なら 45 buttonLabel.text = "Stop!" 46 47 timer = Timer.scheduledTimer(withTimeInterval: 0.0001, repeats: true) { (Timer) in 48 self.timerSecond.text = String(Int.random(in: 1 ... 9)) 49 self.timerMSecond.text = String(Int.random(in: 1...9999)) 50 } 51 52 startTime = NSDate.timeIntervalSinceReferenceDate 53 count = 1 54 }else{//押すのが2回目なら 55 56 if timer != nil{ 57 timer.invalidate() 58 } 59 60 currentTime = NSDate.timeIntervalSinceReferenceDate 61 time = currentTime - startTime 62 63 let second = Int (fmod(time, 60)) 64 time -= TimeInterval(second) 65 let msecond = Int (time * 10000) 66 67 timerSecond.text = String(format: "%01d", second) 68 timerMSecond.text = String(format: "%04d", msecond) 69 70 buttonLabel.backgroundColor = UIColor.darkGray 71 self.gameButton.isEnabled = false 72 73 recordArray.append(recordStruct(record: (Double(timerSecond.text! + "." + timerMSecond.text!)!), recordtmp: (Double(timerSecond.text! + "." + timerMSecond.text!)! - 5.000))) 74 75 recordArray.sort(by: {$0.recordtmp < $1.recordtmp}) 76 77 } 78} 79 80 @IBAction func resetButton(_ sender: Any) { 81 buttonLabel.text = "Start!" 82 self.gameButton.isEnabled = true 83 buttonLabel.backgroundColor = UIColor.orange 84 85 timerSecond.text = "0" 86 timerMSecond.text = "0000" 87 88 count = 0 89 } 90 91 @IBAction func recordButton(_ sender: Any) { 92 performSegue(withIdentifier: "next", sender: nil) 93 } 94 95 override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 96 if segue.identifier == "next"{ 97 let recordVc : recordViewController = segue.destination as! recordViewController 98 recordVc.recordArray2 = recordArray 99 } 100 } 101} 102 103
recordViewController
1 2import UIKit 3 4class recordViewController: UIViewController { 5 6 @IBOutlet var rank1: UILabel! 7 @IBOutlet var rank2: UILabel! 8 @IBOutlet var rank3: UILabel! 9 @IBOutlet var rank4: UILabel! 10 @IBOutlet var rank5: UILabel! 11 @IBOutlet var rank6: UILabel! 12 @IBOutlet var rank7: UILabel! 13 14 struct recordStruct2 { 15 var record : Double = 0.0 16 var recordtmp : Double = 0.0 17 } 18 19 var recordArray2 = [recordStruct2]() 20 21 override func viewDidLoad() { 22 super.viewDidLoad() 23 24 rank1.text! = String(recordArray2[0].record) 25 rank2.text! = String(recordArray2[1].record) 26 rank3.text! = String(recordArray2[2].record) 27 rank4.text! = String(recordArray2[3].record) 28 rank5.text! = String(recordArray2[4].record) 29 rank6.text! = String(recordArray2[5].record) 30 rank7.text! = String(recordArray2[6].record) 31 } 32} 33
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/12/23 14:51
2018/12/24 06:34