是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