아래의 코드에서 어떤 일이 벌어지고 있는지에 대해 약간 당황 스럽습니다. 나는 children
가 (유형 [AnyObject]
입니다) node.children
에 따라 옵션 내가보고하고하는 것은 children
이이 [AnyObject]
때문에 모든 종류의 정보를 포함하지 않는 것입니다, 결코 nil
때문이다 유형 [SKNode]
의 행복이 될 것이라는 인상을했다? [SKNode]
을 [NSString]
으로 변경하더라도 여전히 (1)로 이동합니까?AnyObject에서 다운 캐스트가 발생 했습니까?
if let children = node.children as? [SKNode] {
// (1) STUFF WITH SKNODE...
} else {
// (2) NOPE, ITS NOT AN SKNODE
AnyObject 비트 때문에 그게 보입니다. docs를 보면 node.children이 [AnyObject]를 반환한다고합니다 (항상 SKNode가됩니다). 그것의 재밌는 방법은 NSString 객체를 다룰 수 있기 때문에 [NSString]에 캐스트하면 항상 성공할 수 있습니다. – fuzzygoat
비어있을 때'[NSString]'으로 캐스트하면 성공합니다. 배열에'SKNode'가 있으면 캐스트가 발생하지 않습니다. – vacawama
넵 완벽한, 나는 그것을 얻을 수있다, 나는 그것이 비어있을 수 있다는 사실을 잊고 있었다. 대단히 감사합니다, 시간 내 주셔서 감사합니다. – fuzzygoat