gpt4 book ai didi

iphone - 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:在实体NSSQLEntity CategoryDe​​tail id = 2中找不到“键路径父级”

转载 作者:行者123 更新时间:2023-12-01 17:57:16 26 4
gpt4 key购买 nike

我在两个实体之间有一对多的关系,当用户选择父实体时,我正在使用NSFetchedResultsController显示子类别。我的提取代码如下。
通过看到错误,似乎问题在于输入数据时。所以我也附上了虚拟插入代码。

当我尝试使用NSFetchResultController成为父实体的子代时,它给出以下错误

错误信息msg
由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“在实体NSSQLEntity CategoryDe​​tail id = 2中找不到键路径父级”

- (void)addData:(NSArray *)array forCategory:(NSArray *)a{
// if(target_iphon)



MouseWaitAppDelegate *delegate=(MouseWaitAppDelegate *)[[UIApplication sharedApplication]delegate];
NSManagedObjectContext *context = [delegate managedObjectContext];
Categories *category1 = [NSEntityDescription
insertNewObjectForEntityForName:@"Categories"
inManagedObjectContext:context];

category1.serverId=[NSNumber numberWithInteger:[[a objectAtIndex:0]integerValue]];
category1.name=[a objectAtIndex:1];
category1.textWidth=[NSNumber numberWithFloat:35.0f];


for (NSDictionary *dic in array)
{
CategoryDetail *cDetail = [NSEntityDescription
insertNewObjectForEntityForName:@"CategoryDetail"
inManagedObjectContext:context];

if ([[dic objectForKey:@"type"] isEqualToString:@"Tabs"])
{


cDetail.serverId=[dic objectForKey:@"ID"];
cDetail.name=[dic objectForKey:@"name"];
cDetail.desc=[dic objectForKey:@"desc"];
cDetail.type=[dic objectForKey:@"type"];
cDetail.orderNo=[NSNumber numberWithInteger:[[dic objectForKey:@"order_no"]integerValue]];

}
else if ([[dic objectForKey:@"type"] isEqualToString:@"events"])
{
cDetail.serverId=[dic objectForKey:@"ID"];
cDetail.name=[dic objectForKey:@"name"];
cDetail.latitude=[dic objectForKey:@"lat"];
cDetail.longitude=[dic objectForKey:@"long"];
cDetail.subCatId=[dic objectForKey:@"subcatid"];
cDetail.desc=[dic objectForKey:@"desc"];
// cDetail.event_inst_date=[NSData da]
cDetail.type=[dic objectForKey:@"type"];
cDetail.orderNo=[NSNumber numberWithInteger:[[dic objectForKey:@"order_no"]integerValue]];
}


cDetail.category=category1;
[category1 addCategoryDetailObject:cDetail];


}

NSError *error;
if (![context save:&error]) {
NSLog(@"Whoops, couldn't save: %@", [error localizedDescription]);
}
}




#pragma mark - Getter Setter OverRide
- (NSFetchedResultsController *)fetchedResultsController {

if (_fetchedResultsController != nil) {
return _fetchedResultsController;
}

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription
entityForName:@"CategoryDetail" inManagedObjectContext:managedObjectContext];
[fetchRequest setEntity:entity];

//NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"details.closeDate" ascending:NO];

if (self.parentCategory!=nil)
{
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"parent == %@", self.parentCategory];
[fetchRequest setPredicate:predicate];
}


NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"orderNo" ascending:YES];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]];

[fetchRequest setFetchBatchSize:20];

NSFetchedResultsController *theFetchedResultsController =
[[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:managedObjectContext sectionNameKeyPath:nil
cacheName:@"Root"];
self.fetchedResultsController = theFetchedResultsController;
_fetchedResultsController.delegate = self;

return _fetchedResultsController;

}

最佳答案

如果我正确理解您的代码,则从CategoryDe​​tail到Category的关系称为category而不是parent。因此谓词

[NSPredicate predicateWithFormat:@"parent == %@", self.parentCategory];

应该
[NSPredicate predicateWithFormat:@"category == %@", self.parentCategory];

关于iphone - 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:在实体NSSQLEntity CategoryDe​​tail id = 2中找不到“键路径父级”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15174933/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com