2015-12-16 32 views
22

Wenn ich mein SpriteKit-Spiel ausführe, erhalte ich diesen Fehler mehrfach in der Konsole. Soweit ich das beurteilen kann (obwohl ich mir nicht ganz sicher bin), ist das Spiel selbst nicht betroffen, aber der Fehler könnte einige andere Auswirkungen haben, zusammen mit der Überfüllung der Debug-Konsole.CUICatalog: Ungültige Anforderung: Anfordern des Subtyps ohne Angabe des Idioms (Woher kommt es und wie wird es repariert?)

Ich habe den Fehler untersucht und ein paar mögliche Lösungen gefunden, von denen keine vollständig funktioniert zu haben scheint. Diese Lösungen umfassen das Drehen ignoresSiblingOrder zu false und das Angeben von Texturen als SKTextureAtlas(named: "atlasName").textureNamed("textureName"), aber diese funktionierten nicht.

Ich denke, der Fehler kommt irgendwo von der Verwendung von Texturen und Textur Atlanten im Asset-Katalog, obwohl ich mir nicht ganz sicher bin. Hier ist, wie ich einige dieser Texturen/Bilder bin der Umsetzung:

let Texture = SKTextureAtlas(named: "character").textureNamed("\character1") 
    character = SKSpriteNode(texture: Texture) 

auch:

let Atlas = SKTextureAtlas(named: "character") 
    var Frames = [SKTexture]() 

    let numImages = Atlas.textureNames.count 

    for var i=1; i<=numImages; i++ { 
     let textureName = "character(i)" 
     Frames.append(Atlas.textureNamed(textureName)) 
    } 
    for var i=numImages; i>=1; i-- { 
     let TextureName = "character(i)" 
     Frames.append(Atlas.textureNamed(textureName)) 
    } 


    let firstFrame = Frames[0] 
    character = SKSpriteNode(texture: firstFrame) 

Der obige Code ist nur ein Array zu erstellen, aus denen das Zeichen zu animieren und die Animation läuft völlig in Ordnung.

Für alle meine anderen Sprite-Knoten initialisiere ich mit SKSpriteNode(imageNamed: "imageName") mit dem Image-Namen aus dem Asset-Katalog, aber nicht in einem Textur-Atlas. Alle Bilder haben @ 1x, @ 2x und @ 3x Versionen.

Ich bin nicht sicher, ob es andere mögliche Quellen für die Fehlermeldung gibt, oder ob die obigen Beispiele die Fehlerquellen sind.

Ist das nur ein Fehler mit Sprite-Kit oder ein berechtigter Fehler mit meinem Code oder Assets?

Danke!

+1

Dieser Fehler bleibt in Xcode 7.3 Beta. C'mon Apple –

+0

Dies geht "weg", wenn Texturen direkt aus Atlanten geladen werden, und nicht mit 'initWithImagedNamed: @" somestring "' und ähnlichem. – Jonny

Antwort

18

Ich habe diesen Fehler auch. Meiner Meinung nach ist es der Fehler Xcode 7.2 und nicht deine Schuld. Ich habe Xcode mitten in der Erstellung einer App aktualisiert und diese Nachricht wird ständig in der Konsole angezeigt. Nach this und that Links haben Sie hier nichts zu befürchten.

+0

Danke für die Info. Ich werde es einfach ignorieren, da es die App nicht beeinflusst. Als Nebenbemerkung denke ich, dass Sie Recht haben, dass es sich um einen Fehler mit Xcode 7.2 handelt, da ich gerade aktualisiert habe, und das war es, als ich anfing, den Fehler zu sehen. Vielen Dank! –

+0

Die Links versuchen tatsächlich, das Problem zu lösen, ist es eine gute Idee, das Problem zu ignorieren und auf eine Fehlerbehebung warten? Ich möchte meinen Code nicht wirklich um einen Fehler herum umgestalten. – 3366784

+3

Ein weiterer nach-7.2-Update Opfer – Tony

3

Produkt> Sauber

scheint den Trick zu tun.

Fehler scheint zu erscheinen, wenn Sie ein Objekt aus Asset Catalog löschen, aber seine Referenz bleibt irgendwo im Code verborgen. (In meinem Fall war es das Standard-Raumschiff-Asset, das ich gelöscht habe.)

+1

Hat nicht für mich gearbeitet. Xcode 7.3 beta 3 – Shades

+1

Funktioniert nicht für mich in XCode 7.2.1 – NDB

+1

Ich löschte das Raumschiff Asset von Assets.xcassets, bereinigt das projizierte, und es entfernt die CUICatalog: Invalid Request: Anfrage Subtype ohne Idiom Fehler angeben, die ich bekam. (XCode 7.2.1) – brilliantairic