我正在开发一个iOS应用程序,模型很简单(文件夹和文档),但是我在使用NSFetchedResultsController时遇到了问题。
该应用程序使用NavigationController中的UITableView来显示文件夹中包含的文件夹和文档的列表。用户可以使用向下钻取效果浏览文件夹层次结构。此外,用户可以复制/粘贴文件夹和文档,因此任何文档或文件夹都可以有许多父母。
这是我目前的模特:
AbstractElement{
elementName:string
}
Folder{
parents<<---->>Folder.folders
folders<<---->>Folder.parents
documents<<---->>Document.parents
}
Document{
numPages:int
parents<<---->>Folder.documents
}
如果我使用从当前文件夹创建的NSArray填充UITableView,此模型可以正常工作:
NSArray * currentListOfElements =
[[self.currentFolder.documents sortedArrayUsingDescriptors:descriptors]
arrayByAddingObjectsFromArray:
[self.currentFolder.folders sortedArrayUsingDescriptors:descriptors]];
问题是我需要从NSFetchedResultsController填充UITableView,使用单个NSFetchRequest获取文件夹和文档。解决方案是这样的:
NSEntityDescription *entity = [NSEntityDescription
entityForName:@"AbstractElement" inManagedObjectContext:self.context];
[fetchRequest setEntity:entity];
[fetchRequest setPredicate:[NSPredicate predicateWithFormat:@"%@ IN self.parents", self.currentFolder]];
...create the NSFetchedResultsController using fetchRequest...
但这不起作用,因为AbstractElement没有“父母”关系。
如果我将父关系从Folder and Document移到AbstractElement,问题是如何设置反向关系:
AbstractElement{
elementName:string
parents<<---->> ??
}
Folder{
folders<<---->>Folder.parents
documents<<---->>Document.parents
}
Document{
numPages:int
}
这是正确的方法吗?我如何在我的模型中使用NSFetchedResultsController?我不想删除反向关系,因为我需要实现额外的代码。
感谢。
答案 0 :(得分:0)
Louissmr,
你说,
...用户可以复制/粘贴文件夹和文档,所以任何文件或 文件夹可以有很多父母。
因此,AbstractElement
中有2对多的关系有什么问题。称他们为parents
和children
。它符合您的标准。每个都是另一个的倒数。
安德鲁