我有一个有4个部分的琐事游戏/应用程序。我试图在4个部分保持得分,同时也更新总分。我按照这个问题The best way to implement lives and score count in Sprite Kit (static, IoC, other?)并按照OBJ C中编写的教程的链接。试图将教程代码从Obj C转换为Swift - 我想出了这个 -
class Scoring: NSObject {
var tfscore: Int = 0
var mcscore: Int = 0
var mapsscore: Int = 0
var photoscore: Int = 0
var overallscore: Int = 0
class func sharedGameData() -> Self {
return sharedGameData()
}
}
然后我可以调用评分项目,例如 -
@IBAction func answerButtonHandler(sender: UIButton) {
if sender.titleLabel!.text == correctAnswer {
ayuh()
truefalsescore += 1
Scoring.sharedGameData().tfscore = truefalsescore
Scoring.sharedGameData().overallscore = truefalsescore
}
}
然而,当我构建并运行时,一旦分数发生变化,我就会在 return sharedGameData() 行中出现错误/崩溃。
我是否正确初始化? 这是从各个部分获取分数并能够添加它们,访问它们的最佳方法吗? 谢谢, 埃里克
答案 0 :(得分:2)
您将进入无限递归,因为您自己调用了sharedGameData()
。
请尝试以下方法:
class Scoring {
static let sharedGameData = Scoring()
var tfscore: Int = 0
var mcscore: Int = 0
var mapsscore: Int = 0
var photoscore: Int = 0
var overallscore: Int = 0
init () {
}
}
现在,您可以Scoring.sharedGameData.tfscore += 1
或代码中的任何位置。
答案 1 :(得分:0)
您可以使用Constants.swift
文件放置所有共享变量:
import Foundation
var tfscore: Int = 0
var mcscore: Int = 0
var mapsscore: Int = 0
var photoscore: Int = 0
var overallscore: Int = 0
然后,您可以在代码中的任何位置访问它们。
希望有所帮助