2016-04-08 3 views
0

Ich habe ein Quiz-Spiel/App, die 4 Abschnitte hat. Ich versuche, die Punktzahl über die 4 Abschnitte hinweg zu halten und gleichzeitig die Gesamtpunktzahl zu aktualisieren. Ich folgte diese Frage The best way to implement lives and score count in Sprite Kit (static, IoC, other?) und folgte den Link auf das in OBJ C geschrieben Tutorial In einem Versuch, den Tutorial-Code von Obj C zu Swift zu konvertieren - ich kam mit diesem -So initialisieren Sie die globale Variable für ein Spiel in 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() 
    } 
} 

dann kann ich die Torreigen nennen Elemente wie diese -

@IBAction func answerButtonHandler(sender: UIButton) { 
    if sender.titleLabel!.text == correctAnswer { 
     ayuh() 
     truefalsescore += 1 
     Scoring.sharedGameData().tfscore = truefalsescore 
     Scoring.sharedGameData().overallscore = truefalsescore 
    } 
} 

jedoch, wenn i und laufen bauen, bekomme ich einen Fehler/Absturz auf der, sobald die Partitur Änderungen Rückkehr sharedGameData() Linie.

Ich initialisiere es richtig? Ist dies der beste Weg, um Partituren aus verschiedenen Sektionen zu greifen und in der Lage zu sein, sie hinzuzufügen, auf sie zuzugreifen? Danke, Eric

Antwort

0

können Sie eine Constants.swift Datei verwenden, wo Sie alle Ihre freigegebenen Variablen setzen:

import Foundation 

var tfscore: Int = 0 
var mcscore: Int = 0 
var mapsscore: Int = 0 
var photoscore: Int = 0 
var overallscore: Int = 0 

Dann können Sie diese zugreifen, wo immer Sie in Ihrem Code möchten.

Hoffe, es hilft

2

Sie werden in Endlosschleife geraten, weil Sie sharedGameData() in sich selbst aufrufen.

Bitte, versuchen Sie folgendes:

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() { 

    } 
} 

Jetzt können Sie Scoring.sharedGameData.tfscore += 1 oder was auch immer überall in Ihrem Code.

+1

Danke! Bitte akzeptieren Sie dies als Antwort, wenn meine Antwort hilfreich war;) –

Verwandte Themen