2017-08-07 3 views
0

SKLabelNodeに整数値で格納しようとしていますが、文字列を格納できるだけのエラーが発生し続けます。私は後でそれを整数として必要とする。ここに私のコードがあります:SKLabelNodeに整数値を格納する方法

import SpriteKit 
import GameplayKit 

class GameScene: SKScene { 

override func didMove(to view: SKView) { 

    var comScore = SKLabelNode() 
    comScore.fontName = "Pong Score" 
    comScore.text = 0 
    comScore.fontSize = 100 
    comScore.color = SKColor.white 
    comScore.position = CGPoint(x: 200, y: 220) 
    comScore.zPosition = 3 
    addChild(comScore) 

} 
} 

私はSpriteKitを初めて使っているので大いに感謝します。

答えて

0

SKLabelNodetextプロパティは文字列でありIntではありません。私はinitaly、それを文字列として格納することで、この問題を修正してから使用して

comScore.text = String(myIntValue) 
0

comScore.text = "0" 

か、文字列にのInt変数を変換することができた:あなたは引用符を追加することで文字列を作ることができます

var comScoreInt: Int = Int(comScore.text!)! 
comScoreInt += 1 
comScore.text = String(comScoreInt) 
0

をint型と文字列に関する他の回答に加えて、あなたのスコアに、プロパティウォッチャーを固執するならば、あなたはラベルが更新されますすることができオートマチック:コードを前後にそれを変換し、次のLYあなたはスコア更新したとき:あなた自身の答えに従って、あなたは整数で計算されたプロパティをスコア行い、その後、スコアのラベルの値からスコアを初期化したい、場合

var comScoreInt: Int { 
    didSet{ 
     comScore.text = String(comScoreInt) 
     } 
    } 

は、[編集]を:

var comScoreInt -> Int { 
    get { 
     return Int(comScore.text!) 
     } 
    set(newScore) { 
     comScore.text = String(newScore) 
     } 
    } 

comScoreIntを取得すると、スコアラベルの値が返され、comScoreIntが設定され、ラベルが更新されます。

0

スウィフト3つの 拡張機能はあなたの友達です:

extension String { 
    func integerValue() > Int? { 
     return Int(trimmingCharacters(.whitespacesAndNewlines)) 

    } 

    static func + (left: String, right: Int) -> String { 
     guard let value = left.integerValue() else {return left} 
     return "\(value + right)" 
    } 

    static func += (inout left: String, right: Int) { 
     left = left + right 
    } 
} 

は今、あなたはすぐにやって文字列に追加することができますlabel.text += 1

あなたが希望するので、このようしかし、それをやって、いくつかの保護を失うことに終わります通常はString + Intがエラーを投げることを期待しているので、このプロセスのセキュリティについて考えてみてください。StringNumberStringのいずれかのサブクラスか、特定のタイプの文字列だけをInt、 または提供された拡張機能にエラー処理を追加してください。

これをさらに進めて、文字列(たとえば、 "Points:1")からIntを解析して値を変更することもできます。

この回答は、あなたの問題に使用する決定的な回答とはみなされるべきではありません。私は基本的に、あなたの開発で考慮したい基本的なビルディングブロックの選択肢を提供しています。

関連する問題