单个fetchRequest用于多个实体 - 使用关系和/或实体继承?

时间:2014-09-30 10:37:32

标签: ios objective-c core-data entity nsfetchrequest

我有一个使用Core Data的简单应用。当用户逐步通过每个ViewController时,managedObject将通过每个视图,然后在完成时保存到商店。在我Model有一个Entity超过100 properties的时候,我现在要将其分成多个实体。我对iOS编程很新,对数据库工作也不太自信,如果我的术语不正确,请道歉。

我的应用如何运作的示例:在我的ClientViewController上,我声明managedObjectNGLS当前存储所有属性。

// Identify the app delegate
NGLSAppDelegate *appDelegate = (NGLSAppDelegate *)[[UIApplication sharedApplication]delegate];

// Use appDelegate object to identify managed object context
NSManagedObjectContext *context = [appDelegate managedObjectContext];

// Create new managed object using the NGLS entity description
NSManagedObject *ManagedObjectNGLS;
ManagedObjectNGLS = [NSEntityDescription insertNewObjectForEntityForName:@"NGLS"
                                                  inManagedObjectContext:context];

// Declare managed object
self.managedObjectNGLS = ManagedObjectNGLS;

这会传递给ServicesViewController

    // Allocate & initialise ServicesViewController
    ServicesViewController *services = [[ServicesViewController alloc]initWithNibName:@"ServicesViewController"
                                                                            bundle:nil];

    // Pass managedObject to view
    services.managedObjectNGLS = self.managedObjectNGLS;

    // Push next view
    [self.navigationController pushViewController:services animated:YES];

用户选择了所需的服务后,managedObjectNGLS会存储到我的Model

[[self.managedObjectNGLS managedObjectContext] save:&error];

AdminViewController中,用户可以使用NGLS entity导出fetchRequest的全部内容。请参阅this post我是如何实现这一点的(如果这看起来像是重复的帖子,请道歉,但我仍然试图理解所有这些)。

我的问题:我非常希望有人解释有关我的实体情况的最佳解决方案。我试图设置一个Parent Entity,当只涉及两个实体时似乎工作正常,但是当引入更多实体时,我迷路了。我不确定relationshipsabstract entity

理想情况下,我希望NGLS拥有单独的实体(包含各种重要属性,如日期戳),Admin(用户名,网站位置等),Client,{{1 (最终可能分为Employer1,...,Employer10)和Employer。我不确定是否要创建一个没有属性的ServicesAbstract实体,然后只与这些实体保持关系?

我已经列出了我希望实体在编辑器中看起来像什么,但我不确定这是否正确。该应用程序的想法是每次存储有关一个客户端的详细信息,因此在此基础上,客户端可以拥有许多雇主和许多服务。我实施了一个非常简单的登录"我的Parent实体中的lastObject存储在Admin实体中的系统(有关说明,请参阅this post),因此管理实体不一定有与任何事情的关系(我可能在这里错了?)。

Data model

我尝试了以下代码,但它只是崩溃了应用程序:

NGLS

再次,我为这篇文章道歉,因为我似乎要求一个彻底的答案,但我真的只需要有人指出我正确的方向如何设置单独的实体并使用单个{{1}用所有实体从整个NSMutableArray *entityArray = [NSMutableArray array]; for (NSString *entitySuffix in @[@"NGLS", @"Client", @"Services", @"Employer"]) { NSString *entitySelect = [NSString stringWithFormat:@"%@", entitySuffix]; NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:entitySelect]; [entityArray addObjectsFromArray: [context executeFetchRequest:request error:nil]]; } // CHCSVParser NSOutputStream *stream = [[NSOutputStream alloc]initToMemory]; CHCSVWriter *writer = [[CHCSVWriter alloc]initWithOutputStream:stream encoding:NSUTF8StringEncoding delimiter:',']; // Fetch objects to write to .csv for (Model *results in entityArray) { [writer writeLineOfFields:@[results.site, results.username, results.dateStamp, results.clientTitle, results.clientForename, // results from different entities 获取数据。提前谢谢!

0 个答案:

没有答案