gpt4 book ai didi

Swift:每次单击按钮时显示一个随机数组索引

转载 作者:行者123 更新时间:2023-11-28 06:42:54 25 4
gpt4 key购买 nike

我有一个 swift 类,它从文本文档中读取行并打印出第一行。之后,每次单击按钮时都会读出一行。

我想要的是第一次打印出随机行,然后在每次单击按钮后打印出随机行。

这是我目前所拥有的:

import Foundation
import UIKit

class InfoController: UIViewController {

// MARK: Properties
@IBOutlet weak var difficultylevel: UILabel!
var i:Int = 0


override func viewDidLoad() {
super.viewDidLoad()

}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}

func readFile(){
if let path = NSBundle.mainBundle().pathForResource("easymath", ofType: "txt"){
var data = String(contentsOfFile:path, encoding: NSUTF8StringEncoding, error: nil)

if let content = data {
let myStrings = content.componentsSeparatedByCharactersInSet(NSCharacterSet.newlineCharacterSet())


let randomIndex = Int(arc4random_uniform(UInt32(myStrings.count)))
difficultylevel.text = myStrings[randomIndex]
}
}
}



@IBAction func difficultybutton(sender: UIButton) {

difficultylevel.text = // TODO insert random index of "myStrings" array here

}
}

但是,我无法在单击按钮内的 TODO 部分访问 myStrings 数组。有关如何设置的任何帮助?

最佳答案

Swift 中的变量作用域仅限于函数的括号内。因此,要使 myStringsreadFile() 函数之外可用,您需要将其声明为类的属性:

@IBOutlet var difficultyLevel: UILabel? // BTW your IBOutlet should not be weak
var i: Int = 0
var myStrings: [String]?

既然你要反复使用随机函数,我们可以像这样抽象函数

func randomString() -> String? {
if let strings = myStrings {
let randomIndex = Int(arc4random_uniform(UInt32(myStrings.count)))
return strings[randomIndex]
}
return nil
}

那么你的实例化就是这样

if let content = data {
myStrings = content.componentsSeparatedByCharactersInSet(NSCharacterSet.newlineCharacterSet())
difficultyLevel.text = randomString()
}

然后,您的difficultybutton 函数将是(带有抽象的随机字符串函数)

// Changed the name for better readibility
@IBAction func difficultyButtonTapped(sender: UIButton) {
difficultyLevel.text = randomString()
}

最后,没有任何代码调用 readFile 函数,因此您应该将它添加到可能的 viewDidLoad 函数中,正如@CharlesCaldwell 指出的那样

override func viewDidLoad() {
super.viewDidLoad()
readFile()
}

关于Swift:每次单击按钮时显示一个随机数组索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37439820/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com