2014-10-09 41 views
2

我試圖使用allContactedBodies()斯威夫特,但我不斷收到錯誤'$T5??' does not have a member named 'Generator'

類意識:SKNode { 覆蓋的init(){ super.init() }

required init(coder: NSCoder) { 
    fatalError("NSCoding not supported") 
} 

init(size: CGSize) { 
    // Initialize shape 
    super.init() 

    // Physic Properties 
    self.physicsBody = SKPhysicsBody(rectangleOfSize: size) 
    self.physicsBody?.affectedByGravity = false 
    self.physicsBody?.categoryBitMask = ColliderType.Vision.toRaw() 
    self.physicsBody?.collisionBitMask = 0 
    self.physicsBody?.contactTestBitMask = ColliderType.Wall.toRaw() 
    self.hidden = true 
} 

func contact() -> Bool { 
    for body : AnyObject in self.physicsBody?.allContactedBodies() { // Here is the error 
     return true 
    } 
    return false 
} } 

我該如何解決這個問題才能使用allContactedBodies()?

回答

7

self.physicsBody?.allContactedBodies()返回一個可選項,所以這使得整個表達式可選,由於可選的鏈接。您可以使用零合併運算符的情況下self.physicsBody用一個空數組是零

for body: AnyObject in self.physicsBody?.allContactedBodies() ?? [] { 
    return true 
} 
return false 

,或者使用「如果讓」展開在物理身體的情況下獲得它的存在。

if let physicsBody = self.physicsBody { 
    for body : AnyObject in physicsBody.allContactedBodies() { 
     return true 
    } 
    return false 
} else { 
    return false 
} 
相關問題