2016-05-26 5 views
1

У меня есть цикл, который сортирует через ребенок в SKNode, и по какой-то причине я могу получить доступ только свойства ребенка из SKNode и не SKSpriteNode таких свойств как размер после литье it.Невозможно получить доступ к ребенку свойству SKNode

for tile in map.children where tile is SKSpriteNode { 
    let tileBody = CGRect(origin: tile.position, size: tile.size) 
} 

Его о том, что плитка, которая является отлиты как SKSpriteNode, является SKNode. Его все еще действует как SKNode, когда он должен быть SKSpriteNode. Любое исправление к этому?

EDIT

Я просто принудительному отливают его

let tile = tile as! SKSpriteNode 

и работал. У меня еще не было проблемы, если вы считаете, что это неправильный способ кастинга, я бы хотел это услышать.

+1

Вы должны предоставить ответ на свой вопрос и не изменить вопрос. – Rob

ответ

0

https://developer.apple.com/library/ios/documentation/SpriteKit/Reference/SKNode_Ref/

Я собираюсь предположить, что «карта» является SKNode (или к югу от него). В документации ясно, что свойство children является массивом только для чтения SKNode. В вашем «где - есть» проверяется, что SKNode является SKSpriteNode, он ничего не делает.

После того, как условие прошло (поскольку текущий именованный SKNode может быть отключен до SKSpriteNode), это зависит от вас, чтобы фактически сбить его. Это то, что вы делаете сейчас и почему это работает. Вы можете заставить downcast, как вы делаете сейчас безопасно, потому что вы проверяете, является ли это SKSpriteNode заранее.

EDIT: Ниже приведена документация по используемому оператору «is», который является только оператором, который возвращает true или false, но не передает этот SKNode в SKSpriteNode и делает доступным во внутренней области.

«Использовать оператор проверки типа (is), чтобы проверить, является ли экземпляр определенного типа подкласса. Оператор проверки типа возвращает true, если экземпляр этого типа подкласса и false, если это не так».

https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/TypeCasting.html

Смежные вопросы