将一个 NSManagedObject 用于 UITableView 部分,它与另一个 NSManagedObject 的关系用于行?
Posted
技术标签:
【中文标题】将一个 NSManagedObject 用于 UITableView 部分,它与另一个 NSManagedObject 的关系用于行?【英文标题】:Use one NSManagedObject for UITableView sections and it's relationship to another NSManagedObject for rows? 【发布时间】:2013-01-28 03:14:20 【问题描述】:是否可以设置UITableView
和NSFetchedResultsController
,因为它是dataSource
,其中Contact Group
确定部分,Contact Group
与Person
的多对多关系确定每个部分的行?
所以我的数据模型看起来像这样。
Contact Group
- Person
- Person
- Person
Contact Group
- Person
- Person
- Person
Contact Group
是一个NSManagedObject
,它与Person
NSManagedObjects
具有一对多关系。基本上表格视图也应该如上所示。
我正在使用 MagicalRecord,如果这有所不同,这看起来对吗?
- (NSFetchedResultsController *)fetchedResultsController
if (!_fetchedResultsController)
_fetchedResultsController = [ContactGroup fetchAllSortedBy:@"displayOrder"
ascending:YES
withPredicate:nil
groupBy:@"SELF.contacts"
delegate:self];
return _fetchedResultsController;
哦,我需要能够对每个部分中的联系人进行排序(并保留)。
感谢任何指导。如果我需要更好地澄清,请随时发表评论。
【问题讨论】:
【参考方案1】:我没有使用 Magical Record 的经验,但由于您主要想要来自 Person 的记录,因此您必须在 Person 而不是 ContactGroup 上调用该方法:
- (NSFetchedResultsController *)fetchedResultsController
if (!_fetchedResultsController)
_fetchedResultsController = [Person fetchAllSortedBy:@"displayOrder"
ascending:YES
withPredicate:nil
groupBy:@"contactGroup.groupName"
delegate:self];
return _fetchedResultsController;
【讨论】:
但这会让他们被他们的“父”联系组分成几个部分吗? 是的,如果该关系的名称是“contactGroup”。如果是其他内容,请更改 sectionKeyPath 的名称。 我试过这个,但它说:*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[ContactGroup groupLabel]: unrecognized selector sent to instance 0x8174c20' ***
groupLabel 是组的名称。
哦,还有一件事,我试图从 Contact Group
s 对象派生该部分的原因是,如果特定 Contact Group
不存在 Person
对象,则该部分不会出现,但我希望该部分始终基于Contact Group
对象的存在出现,然后基于Person
对象的行出现。
请将您问题中的代码编辑为您当前拥有的代码并包含错误消息,如果没有看到任何代码很难判断。但是,如果您这样做,则不会显示空白部分。我不确定 Magical Record 是否可以做到这一点。以上是关于将一个 NSManagedObject 用于 UITableView 部分,它与另一个 NSManagedObject 的关系用于行?的主要内容,如果未能解决你的问题,请参考以下文章
NSManagedObject 的设置属性阻止了核心数据中的 iPad UI'
NSManagedObject 和 Codable 用于存储在服务器和本地存储中的类
可以将 NSmanagedObject 移动到另一个 NSManagedContext 吗?
iOS 14 Beta - Swift UI 中的核心数据错误:任何模型中都没有 NSEntityDescriptions 声明 NSManagedObject 子类