文件内容。
1. @NAME1 прыгает через @NAME2#
2. Все игроки молчат.#
3. @NAME1 делает 10 отжиманий.#
我必须从第一行开始,当我在该行中找到@NAME1 或@NAME 2 时,我将其替换为玩家之前输入的名称。如果没有@NAME1,那么我会显示一个字符串并且没有菜单。等等。
以前,我可以从文件中读取一行,然后替换该行上的名称。每次单击按钮时,我都会得到一个随机字符串。
该方法看起来像这样。
func getDataFromFile(name: String , type:String) -> String {
let pathFile = Bundle.main.path(forResource: name, ofType: type)
let contentString = try! NSString(contentsOfFile: pathFile!, encoding: String.Encoding.utf8.rawValue)
let randomContent = contentString.components(separatedBy: ["#"]).randomElement()!.replacingOccurrences(of: "\"", with: "")
return randomContent
}
然后就需要重做,以便顺序读取,方法就这样重做。
func getDataFromFile(name: String , type: String) -> [String] {
let pathFile = Bundle.main.path(forResource: name, ofType: type)
let contentString = try! NSString(contentsOfFile: pathFile!, encoding: String.Encoding.utf8.rawValue)
let fullContent = contentString.components(separatedBy: ["#"]).map { $0.replacingOccurrences(of: "\"", with: "") }
return fullContent
}
let stringsFromFile = getDataFromFile(name: "file", type: "txt")
stringsFromFile.forEach {
$0.replacingOccurrences(of: "@NAME1", with: firstName!, options: .literal, range: nil)
$0.replacingOccurrences(of: "@NAME2", with: secondName!, options: .literal, range: nil)
playerLabel.text = $0
}
现在,由于某种原因,它向我显示了没有名称的一行,而当我尝试显示下一行时,什么也没有发生。
我检查了你的例子,它有错误
\n
行没有显示,因为它们分别在行的开头包含换行符,当输出到标签时,行本身被换行并且不可见。我还添加了删除空行。
此外,这里是每次单击按钮时显示然后从数组中删除行的逻辑。
声明
stringsFromFile
为您孩子的财产UIViewController
:为了消除这一行中的编译错误,将其设为
getDataFromFile(name:type:)
静态:添加一个新属性
var currentStringsFromFileIndex = 0
以跟踪数组中的当前位置stringsFromFile
。据我了解,您有一个按钮,通过单击
stringsFromFile
. 那么处理点击的函数应该有以下代码:现在,当您单击按钮时,
playerLabel
显示的文本将发生变化。