Error on Static Array in Swift Class
我正在使用Swift开发一个应用程序。我从scnnode为此创建了一个子类:
1 2 3 4 5 6 7 8 9 10 11 12 13 | class Charge: SCNNode { static var tagCounter = 0 //to give every charge a unique tag static var charges = [Charge]() //to have a pointer that can access all charges static var selectedCharge: Charge? //pointer to selected charge override init() { super.init() super.geometry = Charge.carbonAtom() Charge.tagCounter++ self.chargeTag = Charge.tagCounter Charge.charges.append(self) } } |
然后,在viewcontroller中多次初始化该类之后,我希望使用
我试图通过在ViewController中添加属性
注意,我使用调试工具来跟踪这个问题。结果发现,在第二次初始化完成后,
编辑:碳化功能
1 2 3 4 5 6 | class func carbonAtom() -> SCNGeometry { let carbonAtom = SCNSphere(radius: 0.8) carbonAtom.firstMaterial!.diffuse.contents = UIColor.redColor() carbonAtom.firstMaterial!.specular.contents = UIColor.whiteColor() return carbonAtom } |
我刚测试过,没有任何xcode错误。
1 2 3 4 5 6 7 8 9 10 11 12 | class Charge: NSObject { static var tagCounter = 0 //to give every charge a unique tag static var charges = [Charge]() //to have a pointer that can access all charges override init() { super.init() // super.geometry = Charge.carbonAtom() Charge.tagCounter++ // self.chargeTag = Charge.tagCounter Charge.charges.append(self) } } |
创建3个
1 2 3 4 5 | for var i = 0; i < 3; i++ { _ = Charge() } print(Charge.charges.count) |
控制台打印
试着检查你的
好了,伙计们,我找到了!
有一些信息是我不提供的(我认为这是无关的),在主管班:
1 2 3 4 5 6 7 8 9 10 11 12 | override func removeFromParentNode() { super.removeFromParentNode() for var i = 0; i<Charge.charges.count; i++ { let charge = Charge.charges[i] if Charge.selectedCharge != nil { if charge == Charge.selectedCharge! { Charge.charges.removeAtIndex(i) } } break } } |
在视图控制器中
1 2 3 4 5 6 | @IBAction func addCharge(sender: AnyObject) { let charge = Charge() scene.rootNode.addChildNode(charge) //root of problem Charge.selectedCharge = charge print(Charge.charges.count) } |
在
我试着在苹果文档中搜索这个信息,但没有用。如果他们能更全面地记录下来:/
谢谢你们的帮助,伙计们:)我用来复制错误的分治方法确实有助于缩小问题的范围。