Ios 错误:使用';自我';在财产访问中';纹理';在super.init初始化self之前
我是斯威夫特的新手,我正在努力学习斯威夫特 创建一个简单的纸牌游戏。我从视频中输入了完全相同的代码。 但是xcode显示错误“在super.init初始化self之前在属性访问“texture”中使用“self” 谢谢你的帮助Ios 错误:使用';自我';在财产访问中';纹理';在super.init初始化self之前,ios,swift,Ios,Swift,我是斯威夫特的新手,我正在努力学习斯威夫特 创建一个简单的纸牌游戏。我从视频中输入了完全相同的代码。 但是xcode显示错误“在super.init初始化self之前在属性访问“texture”中使用“self” 谢谢你的帮助 import SpriteKit class Card: SKSpriteNode { var rank: Int var suit: String var imageNameUp: String var textureUp: SKTex
import SpriteKit
class Card: SKSpriteNode {
var rank: Int
var suit: String
var imageNameUp: String
var textureUp: SKTexture
var textureDown: SKTexture
init(rank: Int, suit: String, faceUp: Bool){
self.rank = rank
self.suit = suit
self.imageNameUp = "\(suit)_\(rank)"
self.textureUp = SKTexture(imageNamed: imageNameUp)
self.textureDown = SKTexture(imageNamed: "cardback")
if faceUp {
self.texture = textureUp //error
} else {
self.texture = textureDown //error
}
super.init(texture: texture, color: nil, size: texture!.size()) //error causes when I try to unwrap size: texture!.size()
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func flip(){
self.texture = textureUp
}
}使用
self.texture=…
调用超类SKSpriteNode的setter for(setTexture:
在Obj-C中)
如果要访问超类属性,必须在调用super.init
后访问
在本例中,我认为您根本不需要修改超类属性,因为纹理正在传递给super.init
。您可以使用局部变量:
let texture = faceUp ? textureUp : textureDown
super.init(texture: texture, ...
我还强烈建议对大多数属性使用let
而不是var
。它们不需要在init
之后更改,使用let
告诉Swift它们不能更改更安全