是SID
和ParentSID
关系或属性?你所描述的情况听起来像是作为一种关系来实现更有意义。这样,您可以通过执行此操作来获取父对象:[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;
}
感谢您的快速响应。 SID和父SID是属性。我有一个返回所有记录的请求。我的想法是将该方法传递给一个子对象并让它循环递归。每次循环时,都会查看所有记录以查找当前对象的新父项。 我将尝试使用while语句的方法来代替。 谢谢, Howie – Ward 2010-01-05 17:30:00
只是看看内存使用情况。无论您认为您拥有多少数据,请将其乘以10,因为这就是您的用户将投入您的应用程序的多少。 – Alex 2010-01-05 20:13:28
感谢您的提示 – Ward 2010-01-05 21:29:08