Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 具有一对多关系的NSFetchedResultsController_Iphone_Objective C_Core Data - Fatal编程技术网

Iphone 具有一对多关系的NSFetchedResultsController

Iphone 具有一对多关系的NSFetchedResultsController,iphone,objective-c,core-data,Iphone,Objective C,Core Data,这是我在处理核心数据时无法理解的。我想使用NSFetchedResultsControllerDelegate,到目前为止我看到的常用代码很容易理解,但总是基于一个实体模型。因此,如果希望在表中显示所有“事件”,则需要对事件实体执行一个获取请求,然后在那里设置为继续 问题是,我的模型是: City (one-to-one) Company (one-to-many) Employees 我的表格需要显示员工,但取回必须基于城市,以便取回公司和员工,对吗?我对此完全不知所措,我就是不知道该怎么取

这是我在处理核心数据时无法理解的。我想使用NSFetchedResultsControllerDelegate,到目前为止我看到的常用代码很容易理解,但总是基于一个实体模型。因此,如果希望在表中显示所有“事件”,则需要对事件实体执行一个获取请求,然后在那里设置为继续

问题是,我的模型是:

City (one-to-one) Company (one-to-many) Employees
我的表格需要显示员工,但取回必须基于城市,以便取回公司和员工,对吗?我对此完全不知所措,我就是不知道该怎么取

因为如果我获取City或Company并将员工放入NSMutableSet,我是否会丢失所有authomatic UITableViewController同步?例如,如果我这样做,我将无法做类似的事情

- (NSInteger)tableView:(UITableView *)tableView 
    numberOfRowsInSection:(NSInteger)section {
    id <NSFetchedResultsSectionInfo> sectionInfo = 
        [[_fetchedResultsController sections] objectAtIndex:section];
    return [sectionInfo numberOfObjects];
}
-(NSInteger)表视图:(UITableView*)表视图
节中的行数:(NSInteger)节{
id sectionInfo=
[[u fetchedResultsController节]对象索引:节];
返回[sectionInfo numberOfObjects];
}

我认为您应该使用City属性或Company Name属性上的过滤器获取“Company”托管对象,或者同时获取两者。如果已在公司和员工之间设置了一对多关系,则公司管理的对象应具有NSSet属性,该属性包含列表所需的所有员工对象。

数据模型应具有相互关系,以便在获取任何特定对象时,您可以立即访问所有相关对象

在您的情况下,具有互惠关系的数据模型看起来像:

City{
    company<-->Company.city
}

Company{
    city<-->City.company
    employees<-->>Employee.company
}

Employee{
    company<<-->Company.employees
}
城市{
公司城市
}
公司{
城市公司
员工>员工公司
}
雇员{

结伴迟做总比不做强

使用谓词

predicate = [NSPredicate predicateWithFormat:@"(ProvinceToCounty == %@)", selectedObject];
从这个链接开始


如果您计划创建一个泛型类并使其适用于不同的父子实体,请确保删除NSFetchedResultsController的缓存名称。

这是我迄今为止所做的,但这样会错过所有与UITableViewController的即时同步(让它侦听NSMutableSet更改,而不仅仅是fetchrequest)。例如,我将无法在tableView numberOfRowsInSection中使用它:我使用NSFetchedResultsController来管理我的UITableViewController。是的,我知道。我不知道的是在这种情况下,当实体位于另一个实体内时如何使用它。我认为您的实体描述应该是“Employees”您的谓词应该遍历关系以正确过滤。因此,NSPredicate*searchType=[NSPredicate predicateWithFormat:@“employee.company.city=%d”,cityId];小心nsfectDredResultController+部分我对它记忆犹新,它被严重窃听(在apple sdk中)在iOS3.2之前。在3.2之后,我认为即使有所改进,它仍然存在一些问题。我没有尝试使用最新版本。我现在正在尽可能避免NSFetchedResultController。。。