[英]How do I play audio files from an array at random in Swift in Xcode11?
[英]How do I find the Max from a group of user inputed Ints using Xcode 11 and swift
這是我到目前為止所擁有的:
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var game1: UITextField!
@IBOutlet weak var game2: UITextField!
@IBOutlet weak var game3: UITextField!
@IBOutlet weak var series: UILabel!
@IBOutlet weak var average: UILabel!
@IBOutlet weak var high: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
@IBAction func calculate(_ sender: Any) {
let game1Results = Int(game1.text!)
let game2Results = Int(game2.text!)
let game3Results = Int(game3.text!)
let gameResultsArray = [game1Results, game2Results, game3Results]
high.text = "\(gameResultsArray.max())"
}
}
我一直在嘗試使用 .max function 但我收到錯誤消息,指出我需要參考“可比”。 我對 swift 很陌生,任何幫助將不勝感激。
發生這種情況是因為您嘗試比較可選 Int (Int?) 的值
首先,你應該知道並不是每個 String 都可以轉換為 Int
例如 '42' 將被正確轉換,但 'ie42zx' 不能轉換為和 Int - 這就是 Int(String) function 返回可選 Int (Int?)
“可選”屬性表示“我可以有一個值,但我也可以為零”。 這就是為什么你應該在你的代碼中解開選項
首先,我建議避免在這里強制展開。
let game1Results = Int(game1.text!)
可以這樣做:
guard
let text1 = game1.text,
let text2 = game2.text,
let text3 = game3.text
else { return }
你應該這樣做,因為不是每個文本字段都包含文本,所以 textField.text 屬性返回一個可選的字符串?
然后您可以將您的 String 結果轉換為 Int 並在比較之前解開這些結果:
guard
let game1Results = Int(text1),
let game2Results = Int(text2),
let game3Results = Int(text3)
else { return }
我建議閱讀更多有關 swift 和展開中的選項的信息(請參閱 選項段落)
我相信您的問題是帶有字符串的 Int 構造函數返回一個可選的 integer 值。 您正在嘗試獲取一堆選項中的最大值,所以它無法弄清楚。
在調用max()
過濾掉 nil 值之前,您可以在數組上使用compactMap
function。
gameResultsArray.compactMap{ $0 }.max()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.