Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 未处理for循环中的最后一条记录_Ios_Objective C_For Loop_Sprite Kit - Fatal编程技术网

Ios 未处理for循环中的最后一条记录

Ios 未处理for循环中的最后一条记录,ios,objective-c,for-loop,sprite-kit,Ios,Objective C,For Loop,Sprite Kit,当我从代码中的数组修复zPosition时,我遇到了一个奇怪的问题。未加载最后一条记录以及同名的实际精灵。除最后一部作品外的所有其他精灵 守则: // Refresh the nodes NSLog(@"#1 workingArray: %@", workingArray); for (NSString *aCard in workingArray) { if ([aCard isEqualToString:[workingArray objectAtIndex:[workingArr

当我从代码中的数组修复zPosition时,我遇到了一个奇怪的问题。未加载最后一条记录以及同名的实际精灵。除最后一部作品外的所有其他精灵

守则:

// Refresh the nodes
NSLog(@"#1 workingArray: %@", workingArray);
for (NSString *aCard in workingArray) {

    if ([aCard isEqualToString:[workingArray objectAtIndex:[workingArray count]-1]]) {
        NSLog(@"#2 Found %@", aCard); // To check that the record is present
    }

    SKNode *refreshNodeForZPos = [_background childNodeWithName:aCard];
    refreshNodeForZPos.name = aCard;
    refreshNodeForZPos.zPosition = zPosition;
    zPosition++;
    NSLog(@"#3 refreshNode:%@ + z:%.0f", refreshNodeForZPos.name, zPosition);
}
当查看#1 NSLog输出时,我可以看到最后一条记录“CJ”在那里:

'#1' workingArray: (
C6b,
C2b,
CQb,
C8b,
CAb,
CKb,
C5b,
C10b,
C9b,
C4b,
C7b,
C3b,
CJ
#2 NSLog只需确保我真的找到了记录,#3正在记录循环:

'#3' refreshNode:C6b + z:1
'#3' refreshNode:C2b + z:2
'#3' refreshNode:CQb + z:3
'#3' refreshNode:C8b + z:4
'#3' refreshNode:CAb + z:5
'#3' refreshNode:CKb + z:6
'#3' refreshNode:C5b + z:7
'#3' refreshNode:C10b + z:8
'#3' refreshNode:C9b + z:9
'#3' refreshNode:C4b + z:10
'#3' refreshNode:C7b + z:11
'#3' refreshNode:C3b + z:12
'#2' Found CJ
'#3' refreshNode:(null) + z:13

最后一条记录(z:13)为空,我不明白为什么。

正如Brian Walker正确指出的那样,问题出在代码的另一部分,而不是循环本身

每个精灵实际上由两个精灵表示:“CJb”(精灵的一个示例)是精灵的背面,“CJ”是精灵的正面。它们都被添加到背景中。双击精灵时,会发生以下情况:

  • 我检查精灵是否在名称的末尾有一个“b”,如果有,它是背面显示,如果没有,它是正面显示
  • 我用应该显示的前/后精灵创建了一个新的SKSpriteNode,并保存它的凭证
  • 我删除了“旧”精灵,对新精灵做了一个“addChild”,同时用名称更新数组,用于设置正确的位置
  • 我的错误

    在最初的addChild中,所有精灵都是这样添加的:

    [_background addChild: theSprite]
    
    后来我将精灵从“CJb”切换到“CJ”时,我使用了:

    …然后,在更新“workingArray”后,处理上述代码。在addChild中将“self”改回“_background”后,一切都正常了

    小结:我必须添加使用相同背景的新精灵

    然而,我仍然不完全理解它为什么不处理最后一条记录


    另外,非常感谢@Brian Walker和@Wain:-)

    完成了调试吗?
    childNodeWithName
    是否返回有效实例?“[\u background childNodeWithName:aCard]”是否在传递@“CJ”时返回nil?@Wain我已经调试了几个小时:-)我确实在childNodeWithName上插入了一个NSLog,最后一条记录返回null。@Brian Walker Brian是的。这就是为什么您会得到
    null
    的日志。不知道你在找什么。。。
    [self addChild: theSprite]