Ios 如何确定spritenode是否不等于零?
所以在Obj-C中,我经常这样做:Ios 如何确定spritenode是否不等于零?,ios,objective-c,swift,sprite-kit,Ios,Objective C,Swift,Sprite Kit,所以在Obj-C中,我经常这样做: SKSpriteNode *someNode = [SKSpriteNode spriteNodeWithImageNamed:@"foo"]; someNode.position = CGPointMake(100,100); someNode.size = CGSizeMake(100,100); [self addChild:someNode] //I'd test it like this: if (someNode) { //Do someth
SKSpriteNode *someNode = [SKSpriteNode spriteNodeWithImageNamed:@"foo"];
someNode.position = CGPointMake(100,100);
someNode.size = CGSizeMake(100,100);
[self addChild:someNode]
//I'd test it like this:
if (someNode) {
//Do something
}
//I could also do it like this:
if (someNode != nil) {
//Do something
}
if someNode != nil {
//Do something
}
然而,当我想在swift中实现同样的功能时,它会给我一个错误:二进制运算符“!=”无法应用于“SKSpriteNode”和“nil”类型的操作数
我是这样做的:
SKSpriteNode *someNode = [SKSpriteNode spriteNodeWithImageNamed:@"foo"];
someNode.position = CGPointMake(100,100);
someNode.size = CGSizeMake(100,100);
[self addChild:someNode]
//I'd test it like this:
if (someNode) {
//Do something
}
//I could also do it like this:
if (someNode != nil) {
//Do something
}
if someNode != nil {
//Do something
}
我也试过:
if someNode {
//Do something
}
这给了我一个错误:类型“SKSpriteNode”不符合协议“BooleanType”
有没有一种方法来测试一个节点是否已经存在?
基本上你必须考虑<代码> SKSpriteNode < /代码>节点从<代码> SKNode < /C>中派生,因此它继承了它的所有属性,根据Apple DOC:
在Swift 2.x中,最好的一般方法是:if let someNodeExist = self.childNodeWithName("\\someNode") {
print("\(someNodeExist.debugDescription)")
}
在Swift 3.x中:
if let someNodeExist = self.childNode(withName: "\\someNode") {
print("\(someNodeExist.debugDescription)")
}
或使用防护装置:
guard let someNodeExist = self.childNode(withName: "\\someNode") else { return }
之后,您可以检查someNodeExist或直接向SKSpriteNode转换的类的类型,由您决定。在Swift文档中查找“optionals:)