2016-02-27 81 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")