0
我需要在for-in
循環內遍歷SKNode.children
,我需要通過訪問我的類的屬性來檢查條件是真還是假,通過node
。我想我需要將node
作爲我班的一個對象,以便能夠通過在Swift中使用isKindOfClass
方法訪問類型爲bool
的屬性。這是Objective-C的代碼。任何想法如何在Swift中做同樣的事情?如何在for-in循環中使用isKindOfClass訪問我的類的屬性?
-(BOOL)isCompleted() {
for(SKNode *node in mainLayer.children) {
if([node isKindOfClass:[Laser class]]) {
if(!((Laser*)node).indestructible) {
return NO
}
}
}
return YES
}
我覺得'return(mainLayer.children.filter {$ 0是Laser} as! [激光])。包含{!$ 0.indestructible}'可能更具可讀性,但顯然這是主觀的 –
你也可以做'children.flatMap {$ 0 as?激光}'以避免演員陣容。 –
我認爲在第一個例子中'as'應該是'as?',而第二個例子中的邏輯不正確。如果您將第二個示例更改爲'return!(mainLayer.children.contains {!(($ 0 as?Laser)?. indestructible ?? true)})',則結果與第一個示例相同。 – Epsilon