您可以使用所有 Story 对象都具有的基本参数创建抽象实体 Story。您可以创建其他具体实体,例如事件、具有特定字段的状态更新,并将这些具体实体的父实体参数设置为 Story。通过这种方式,具体实体继承了抽象 Story 实体的所有字段。
(您可以在 Utilities -> Data Model Inspector 中设置抽象实体和父实体参数)。
因此,您的实体将拥有清晰易读的界面。您还可以在 tableView 中获取并显示所有实体,在获取请求中指定“Story”实体。
编辑
是的,您可以设置从组到故事的多对多关系。例如
您可以像这样添加事件和状态实体:
Group *grp = [NSEntityDescription insertNewObjectForEntityForName:@"Group" inManagedObjectContext:self.managedObjectContext];
grp.goupID = @(12);
Event *event = [NSEntityDescription insertNewObjectForEntityForName:@"Event" inManagedObjectContext:self.managedObjectContext];
event.storyID = @(123);
Status *status = [NSEntityDescription insertNewObjectForEntityForName:@"Status" inManagedObjectContext:self.managedObjectContext];
status.storyID = @(1);
[grp addStoriesObject:event];
[grp addStoriesObject:status];
NSLog(@"group stories %@", grp.stories);
日志结果:
2013-07-03 23:14:03.706 crdtTest[85418:c07] group stories Relationship 'stories' on managed object (0x74b1f50) <Group: 0x74b1f50> (entity: Group; id: 0x74b1fa0 <x-coredata:///Group/t119EA6E0-0B3B-42EB-AB33-1553CE34ABA42> ; data: {
goupID = 12;
stories = (
"0x816e720 <x-coredata:///Status/t119EA6E0-0B3B-42EB-AB33-1553CE34ABA44>",
"0x816d980 <x-coredata:///Event/t119EA6E0-0B3B-42EB-AB33-1553CE34ABA43>"
);
}) with objects {(
<Status: 0x816e6d0> (entity: Status; id: 0x816e720 <x-coredata:///Status/t119EA6E0-0B3B-42EB-AB33-1553CE34ABA44> ; data: {
group = "0x74b1fa0 <x-coredata:///Group/t119EA6E0-0B3B-42EB-AB33-1553CE34ABA42>";
storyID = 1;
}),
<Event: 0x816d930> (entity: Event; id: 0x816d980 <x-coredata:///Event/t119EA6E0-0B3B-42EB-AB33-1553CE34ABA43> ; data: {
eventDate = nil;
group = "0x74b1fa0 <x-coredata:///Group/t119EA6E0-0B3B-42EB-AB33-1553CE34ABA42>";
storyID = 123;
})
)}