Мое приложение настроено так, что оно извлекает список вещей из одного объекта (список местоположений (школ)) и помещает их в сборщики внутри моего представления.
В представлении пользователь выбирает местоположения, и пробег генерируется автоматически (предустановлен внутри того же объекта, из которого мы получаем местоположения).
Когда они нажимают «сохранить запись», я хочу, чтобы она сохранялась в другом объекте в 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'
Я настроил его для отображения каждой вещи, которая должна быть сохранена в объекте (только для тестирования, чтобы убедиться, что он захватывает соответствующие данные) и, согласно журналу, я вижу, что он получает соответствующие данные. Но вторая часть выглядит так, как будто она также пытается сохранить запись MetaMiles. Я не хочу этого делать. Сущность MetaMiles — это только сущность, из которой я получаю данные — для нее никогда не потребуется никакого сохранения. Как указать, что нужно сохранять только объект UserMiles, а НЕ сохранять объект MetaMiles (из которого я изначально извлекаю информацию)?
Мой код кнопки выглядит так:
//Button to track miles
- (IBAction)trackMilesButton:(id)sender {
//When button is clicked - save the trip to the User_Miles database!
UserMiles *newMilesEntry = [UserMiles MR_createEntity];
//Configure entry data
[newMilesEntry setEnd_school:[_schoolArray1 objectAtIndex:[_tripPicker selectedRowInComponent:0]]];
NSLog(@"Selection 1: %@",[_schoolArray1 objectAtIndex:[_tripPicker selectedRowInComponent:0]]);
[newMilesEntry setBeg_school:[_schoolArray1 objectAtIndex:[_tripPicker selectedRowInComponent:1]]];
NSLog(@"Selection 2: %@",[_schoolArray1 objectAtIndex:[_tripPicker selectedRowInComponent:1]]);
NSArray *currentMiles = [self getMileage];
MetaMiles *tripMiles = [currentMiles objectAtIndex:0];
[newMilesEntry setMiles:tripMiles.miles];
NSLog(@"Miles: %@",tripMiles.miles);
[newMilesEntry setDriven_date:self.datePicker.date];
NSLog(@"DrivenDate: %@", self.datePicker.date);
[newMilesEntry setEntry_date:[NSDate date]];
NSLog(@"Date: %@", [NSDate date]);
//Save the data & reload View
[NSManagedObjectContext MR_rootSavingContext];
[self viewDidLoad];
}
Не очень хорошо знаком с CoreData, так как я все еще изучаю все это. С одной стороны, мне кажется, что я освоился с этим, но затем такие глупости заставляют меня думать, что я делаю 3 шага назад.
Вся помощь приветствуется.