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