Objective c 使用MagicalRecord保存实体-是否也尝试保存其他实体?

Objective c 使用MagicalRecord保存实体-是否也尝试保存其他实体?,objective-c,core-data,magicalrecord,Objective C,Core Data,Magicalrecord,我的应用程序是这样设置的,它从一个实体(地点(学校)列表)中获取一个事物列表,并将它们放入我视图中的选择器中 在视图中,用户选择位置并自动生成里程(预设在从中获取位置的同一实体内) 当他们单击“保存条目”时,我希望它保存到coredata中的另一个实体,我相信我已将其设置为正确执行此操作,但它会引发此错误: 2014-02-19 10:20:34.545 54 Miles[19263:70b] Selection 1: Aldrin 2014-02-19 10:20:34.546 54 Mile

我的应用程序是这样设置的,它从一个实体(地点(学校)列表)中获取一个事物列表,并将它们放入我视图中的选择器中

在视图中,用户选择位置并自动生成里程(预设在从中获取位置的同一实体内)

当他们单击“保存条目”时,我希望它保存到coredata中的另一个实体,我相信我已将其设置为正确执行此操作,但它会引发此错误:

2014-02-19 10:20:34.545 54 Miles[19263:70b] Selection 1: Aldrin
2014-02-19 10:20:34.546 54 Miles[19263:70b] Selection 2: Addams
2014-02-19 10:20:34.548 54 Miles[19263:70b] Miles: 1.8
2014-02-19 10:20:34.550 54 Miles[19263:70b] DrivenDate: 2014-02-19 16:15:31 +0000
2014-02-19 10:20:34.550 54 Miles[19263:70b] Date: 2014-02-19 16:20:34 +0000
2014-02-19 10:20:34.561 54 Miles[19263:70b] CoreData: error: (NSFetchedResultsController) object <MetaMiles: 0x8a8abb0> (entity: MetaMiles; id: 0x8a34d30 <x-coredata:///MetaMiles/t8DB6BCC9-78DF-4699-A86A-538E7ABD85292> ; data: {
    "beg_school" = nil;
    "end_school" = nil;
    miles = 0;
}) returned nil value for section name key path 'beg_school'. Object will be placed in unnamed section
2014-02-19 10:20:34.563 54 Miles[19263:70b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSSetM addObject:]: object cannot be nil'
我对CoreData不太熟悉,因为我仍在学习这一切。一方面,我觉得我已经掌握了窍门,但是像这样愚蠢的事情让我觉得我在后退三步


感谢所有的帮助。

我在我的方法中创建了一个实体来计算里程-一旦我消除了这个错误,错误就消失了

数据仍然没有适当地保存,但这完全是另一个问题

我注释掉了创建新的“blank”实体的部分,并将数组设置为nil,然后处理在代码中其他地方为nil时该怎么办

以下是一些好奇的人的方法:

//****GET MILEAGE METHOD****//
- (NSArray *)getMileage {
    //Update the Mileage indicator to display miles between currently selected values
    NSString *begSchool = [_schoolArray1 objectAtIndex:[_tripPicker selectedRowInComponent:0]];
    NSString *endSchool = [_schoolArray1 objectAtIndex:[_tripPicker selectedRowInComponent:1]];
    NSPredicate *milesFilter = [NSPredicate predicateWithFormat:@"beg_school=%@ AND end_school=%@", begSchool, endSchool];
    NSArray *resultMiles = [MetaMiles MR_findAllWithPredicate:milesFilter];
    if (!resultMiles || ![resultMiles count]) {
        //The first load - this displays appropriately in log letting us know there is currently nothing there
        NSLog(@"Empty Array");
        //MetaMiles *emptyInstance = [MetaMiles MR_createEntity];
        //resultMiles = [[NSArray alloc]initWithObjects:emptyInstance, nil];
        resultMiles = nil;
    } else {
        MetaMiles *tripMiles = [resultMiles objectAtIndex:0];
        //This confirms our result miles come out appropriately - they look like this: ("2.1")
        NSLog(@"Our result miles are: %@", tripMiles.miles);
    }
    return resultMiles;
}
//****END GET MILEAGE****//
//****GET MILEAGE METHOD****//
- (NSArray *)getMileage {
    //Update the Mileage indicator to display miles between currently selected values
    NSString *begSchool = [_schoolArray1 objectAtIndex:[_tripPicker selectedRowInComponent:0]];
    NSString *endSchool = [_schoolArray1 objectAtIndex:[_tripPicker selectedRowInComponent:1]];
    NSPredicate *milesFilter = [NSPredicate predicateWithFormat:@"beg_school=%@ AND end_school=%@", begSchool, endSchool];
    NSArray *resultMiles = [MetaMiles MR_findAllWithPredicate:milesFilter];
    if (!resultMiles || ![resultMiles count]) {
        //The first load - this displays appropriately in log letting us know there is currently nothing there
        NSLog(@"Empty Array");
        //MetaMiles *emptyInstance = [MetaMiles MR_createEntity];
        //resultMiles = [[NSArray alloc]initWithObjects:emptyInstance, nil];
        resultMiles = nil;
    } else {
        MetaMiles *tripMiles = [resultMiles objectAtIndex:0];
        //This confirms our result miles come out appropriately - they look like this: ("2.1")
        NSLog(@"Our result miles are: %@", tripMiles.miles);
    }
    return resultMiles;
}
//****END GET MILEAGE****//