Aar*_*egh 0 cocoa objective-c fast-enumeration
我正在尝试在树中找到匹配的对象,所以我正在使用ObjC快速枚举.问题是我的方法找到匹配的值,命中返回行,然后将值设置为nil并继续迭代.这是我的方法:
+ (INONode *)findByUUID:(NSString*)uuid fromRootNode:(INONode*)node
{
for (INONode * childNode in [node children]) {
if ([[node uniqueID] isEqualToString:uuid]) {
break;
}
else {
[INONode findByUUID:uuid fromRootNode:childNode];
}
}
return node;
}
Run Code Online (Sandbox Code Playgroud)
当我通过设置断点来执行代码执行时,会触发中断,然后转到返回行,然后返回到继续迭代的语句.我在这里错过了什么?
由于您的方法是递归的,因此return返回循环中的else分支if并继续搜索.
它当前实现的方式,您的方法将只返回传入其中的节点.唯一的return陈述是return node,node永远不会被修改.
这是你可以做到的一种方式:
+ (INONode *)findByUUID:(NSString*)uuid fromRootNode:(INONode*)node
{
// Check the root node
if ([[node uniqueID] isEqualToString:uuid]) {
return node;
}
// Check each child
for (INONode * childNode in [node children]) {
node = [INONode findByUUID:uuid fromRootNode:childNode];
if (node) {
return node;
}
}
return nil;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
304 次 |
| 最近记录: |