gpt4 book ai didi

iphone - cocoa iPhone 递归数组

转载 作者:行者123 更新时间:2023-12-03 18:06:13 28 4
gpt4 key购买 nike

我正在使用 core-data,并且有一个实体,该实体具有一个名为 SID 的属性和另一个名为 ParentSID 的属性。

我正在尝试创建一个方法,在该方法中我可以传递从集合中获取的对象,并且它将通过检查每个祖先的 ParentSID 返回该对象的沿袭。

如果 ParentSID > 0,则应递归循环,直到找到 ParentSID 为 0 的祖先。每次循环时,应将祖先添加到谱系数组中。

如果 ParentSID 为 0,则完成并应返回谱系数组。

不确定这是否有意义。

谢谢,豪伊

最佳答案

SIDParentSID 是关系还是属性?您所描述的情况听起来作为一种关系来实现更有意义。这样,您就可以通过执行以下操作来获取父对象:[object valueForKey:@"parentSID"]。否则,您需要像这样执行整个获取请求:

NSFetchRequest *parentFetchRequest = [[NSFetchRequest alloc] init];
[parentFetchRequest setEntity:[NSEntityDescription entityForName:@"SID" inManagedObjectContext:managedObjectContext];
[parentFetchRequest setPredicate:[NSPredicate predicateWithFormat:@"parentSID == %@", [object valueForKey:@"parentSID"]];
NSArray *parents = [managedObjectContext executeFetchRequest:parentFetchRequest error:nil];
[parentFetchRequest release];
if ([parents count] == 0) {
// TODO: Handle this error
return;
}

NSManagedObject *parentSID = [parents lastObject];
// Now, at long last, you have a reference to the parent object.

为了回答您的具体问题,我不会将其作为递归方法来执行。您可以轻松地迭代执行此操作。例如:

NSManagedObject *sid = // get the original object
NSMutableArray *lineage = [NSMutableArray array];
while (sid) {
NSMutableObject *parent = // get the parent using one of the techniques above
if (parent)
[lineage addObject:parent];
sid = parent;
}

关于iphone - cocoa iPhone 递归数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2007567/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com