¿Cómo puedo saber si una SKTexture es la image de marcador de position

En SpriteKit, si carga una image con el método [SKTexture textureWithImageNamed:], searchá primero los packages y luego los atlas, si no encuentra su textura, creará una image de marcador de position y la cargará.

¿Hay alguna forma de averiguar (sin verificación visual) si la image cargada es un marcador de position?

Esto no parece ser una forma muy "cocoatera" para manejar este tipo de error.

developer.apple.com ha caído ahora, así que pensé que plantearía esta pregunta a SO.

SKTexture tiene algunas properties privadas que serían útiles (consulte, por ejemplo, https://github.com/luisobo/Xcode-RuntimeHeaders/blob/master/SpriteKit/SKTexture.h ), pero en Swift y durante el desarrollo estoy usando esto:

extension SKTexture { public var isPlaceholderTexture:Bool { if size() != CGSize(width: 128, height: 128) { return false } return String(describing: self).contains("'MissingResource.png'") } } 

¡Atención! :

Esto solo funciona, si está utilizando un SKTextureAtlas :

 let t1 = SKTextureAtlas(named: "MySprites").textureNamed("NonExistingFoo") // t1.isPlaceholderTexture == true let t2 = SKTexture(imageNamed: "NonExistingBar") // t2.isPlaceholderTexture == false 

Puede verificar si el atlas contiene la image. Creé el siguiente método en mi AtlasHelper:

 +(BOOL) isTextureWithName:(NSString *) name existsInAtlas:(NSString *)atlasName { SKTextureAtlas *atlas = [SKTextureAtlas atlasNamed:atlasName]; return [atlas.textureNames containsObject:name]; }