2016-02-27 92 views
0

我有幾天前正在工作的以下代碼,但突然間,沒有做任何更改,給了我所有這些錯誤。任何幫助排除故障將不勝感激。比較字符串的問題

init(name: String, arrayOfNodes: [SKSpriteNode]){ 

var SKnode = SKSpriteNode(imageNamed: "Cool Image") 

SKnode.name = name  //Error: Cannot apply value of type String to type String 

for(node in arrayOfNodes){ //4 errors about random things like putting in commas at various points 
    //Stuff 
} 

if(name == "Billy"){ //Binary operator "==" cannot be applied to operands of type String and String 
    //Stuff 
} 

這些錯誤都對我來說似乎沒有問題,它們都是在沒有對文件進行任何更改的情況下產生的。我已經嘗試重新啓動Xcode,重新啓動計算機,它們都不會更改錯誤消息。

+0

嘗試從你的'for..in'聲明去掉括號,他們不應該在那裏。 – ColGraff

+0

謝謝,這會照顧那些錯誤,但是對於其他人的任何想法? – Ulthran

+0

此外,'SKSpriteNode'的init方法應該是'SKSpriteNode(imageNamed :)' – ColGraff

回答

1

正如在評論中討論,你在for..in聲明中有額外的括號,你沒有申報的變量SKnode(該公約是在最初的小寫字母來命名,因此不會有衝突SKNode),以及適當的SKSpriteNode init的標籤爲imageNamed

一旦這些錯誤得到解決,我不會再有任何問題。也許你的問題來自你的課堂或代碼中的其他問題?

我糾正代碼:

import SpriteKit 

class Foo { 
    init(name: String, arrayOfNodes: [SKSpriteNode]){ 

    let skNode = SKSpriteNode(imageNamed: "Cool Image") 

    skNode.name = name 

    for node in arrayOfNodes { 
     //Stuff 
    } 

    if(name == "Billy"){ 
     //Stuff 
    } 
    } 
} 
+0

我已經將這個完全相同的代碼複製並粘貼到一個新文件中,但是它遇到了與我遇到String to String事件相同的錯誤消息。 – Ulthran

+0

聽起來你可能已經在某處擴展或重新定義了'String'。你有沒有其他的環境可以分享? – ColGraff

+0

Ohhhhh ...非常感謝。我創建了一個名爲String的類,它指的是字符串的一部分,我很愚蠢,無法捕捉它。 – Ulthran

0

問題的一部分是for循環中的括號。刪除它們。 Apple建議類型以大寫字母開頭,因此SKnode作爲變量名可能是合法的,但它會讓其他人感到困惑。我不確定其他兩個錯誤。

爲什麼SKSpriteNode中的參數標籤不是這樣的; SKSpriteNode(imageNamed: "Cool Image")