我正在使用SKNode方法在SKScene中搜索childNodeWithName:。要设置名称,我使用的是NSManagedObjectID的URI字符串表示形式,如下所示:
[[managedObjectID URIRepresentation] absoluteString];
节点名称为:

x-coredata:// 0856426F-EA66-4D28-A88A-FF49225F69B6 / Object / p4

但是,childNodeWithName:方法返回nil。在调试器中进行检查时,该节点与其他两个节点明确存在:

<__NSArrayI 0x9933eb0>(

<SKSpriteNode> name:'(null)' texture:['nil'] position:{160, 284} size:{320, 568} rotation:0.00,

<SKSpriteNode> name:'x-coredata://0856426F-EA66-4D28-A88A-FF49225F69B6/Object/p4' texture:['nil'] position:{31, 537} size:{50, 50} rotation:0.00,

<SKSpriteNode> name:'x-coredata://0856426F-EA66-4D28-A88A-FF49225F69B6/Object/p1' texture:['nil'] position:{217, 416} size:{50, 50} rotation:0.00

)

为了加强这一点,如果我将节点名称设置为“testingName”之类的名称,则按预期返回节点。

这使我相信Sprite Kit不喜欢我使用的名称。是否有人知道命名限制,或者是否对为什么URL格式会在此处造成问题有想法?

谢谢。

最佳答案

here回答@kylefuller
从苹果公司:

搜索使用常见的正则表达式语义。
“//”-当放置在搜索字符串的开头时,它指定搜索应从根节点开始,并在整个节点树中递归执行。搜索字符串中的其他任何地方都不合法。

07-26 09:30