我有一个使用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
,当只涉及两个实体时似乎工作正常,但是当引入更多实体时,我迷路了。我不确定relationships
或abstract entity
?
理想情况下,我希望NGLS
拥有单独的实体(包含各种重要属性,如日期戳),Admin
(用户名,网站位置等),Client
,{{1 (最终可能分为Employer1,...,Employer10)和Employer
。我不确定是否要创建一个没有属性的Services
或Abstract
实体,然后只与这些实体保持关系?
我已经列出了我希望实体在编辑器中看起来像什么,但我不确定这是否正确。该应用程序的想法是每次存储有关一个客户端的详细信息,因此在此基础上,客户端可以拥有许多雇主和许多服务。我实施了一个非常简单的登录"我的Parent
实体中的lastObject
存储在Admin
实体中的系统(有关说明,请参阅this post),因此管理实体不一定有与任何事情的关系(我可能在这里错了?)。
我尝试了以下代码,但它只是崩溃了应用程序:
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
获取数据。提前谢谢!