我的xcdatamodel中有以下2个实体:
矩阵 1.1属性 名称 1.2关系 MatrixToProcess 目的地是:流程 Inverse是:ProcessToMatrix 检查To-Many关系 删除规则是级联
过程 2.1属性 名称 2.2关系 ProcessToMatrix 目的地是:矩阵 反向是:MatrixToProcess 未检查To-Many关系 删除规则为Nullify
我可以成功添加一个新的Matrix,它会被添加并在UITableView中正确显示。
我可以成功添加新进程,但是, 使用Matrix表中的Z_PK值的EXCEPTION将所有必要信息添加到数据库中。 即iPhone模拟器中的sqlite数据库将创建新的进程名称,但不会在ZPROCESSTOMATRIX列中输入任何信息。如果我手动插入关联的Matrix Name Z_PK值,一切正常。
我正在努力。不完全了解如何在Process * newProcess = [NSEntityDescription insertNewObjectForEntityForName:@“Process”inManagedObjectContext:self.managedObjectContext];中添加addObject。 这是我正在使用的代码:
- (void)addProcess:(id)sender {
ProcessAddViewController *addController = [[ProcessAddViewController alloc] initWithNibName:@"ProcessAddView" bundle:nil];
addController.delegate = self;
Process *newProcess = [NSEntityDescription insertNewObjectForEntityForName:@"Process" inManagedObjectContext:self.managedObjectContext];
addController.process = newProcess;
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:addController];
[self presentModalViewController:navigationController animated:YES];
[navigationController release];
[addController release];
}
- (void)processAddViewController:(ProcessAddViewController *)processAddViewController didAddProcess:(Process *)process {
if (process) {
[self showProcess:process animated:NO];
}
[self dismissModalViewControllerAnimated:YES];
}
- (void)showProcess:(Process *)process animated:(BOOL)animated {
RootViewController *rootViewController = [[RootViewController alloc] initWithStyle:UITableViewStyleGrouped];
rootViewController.managedObjectContext = self.managedObjectContext;
if(entitySearchPredicate == nil)
{
NSMutableArray* mutableFetchResults = [CoreDataHelper getObjectsFromContext:self.entityName :@"displayOrder" :YES :managedObjectContext];
[self setEntityArray:mutableFetchResults];
[mutableFetchResults release];
}
else
{
NSMutableArray* mutableFetchResults = [CoreDataHelper searchObjectsInContext:self.entityName :entitySearchPredicate :@"displayOrder" :YES :managedObjectContext];
[self setEntityArray:mutableFetchResults];
[mutableFetchResults release];
}
[rootViewController release];
}
非常感谢任何帮助和/或指示。
答案 0 :(得分:0)
您需要设置新流程和Matrix之间的关系。
查看this answer至iphone core data inserting new objects question。
更新
假设您已经为Process和Matrix生成了类文件并且Process与Matrix有一个名为“processToMatrix”的关系,那么设置关系的代码将是:
newProcess.processToMatrix = matrix;
其中“matrix”是应该与新Process对象关联的Matrix对象。