Aplikasi saya telah diatur sehingga mengambil daftar hal-hal dari satu entitas (daftar lokasi (sekolah)) dan memasukkannya ke dalam pemilih di dalam tampilan saya.
Dalam tampilan, pengguna memilih lokasi dan jarak tempuh secara otomatis dihasilkan (disetel di dalam entitas yang sama tempat kita mendapatkan lokasi).
Ketika mereka mengklik "simpan entri", saya ingin menyimpannya ke entitas lain di coredata dan saya yakin saya telah mengaturnya untuk melakukan itu dengan benar, tetapi ini memicu kesalahan ini:
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'
Saya mengaturnya untuk menggemakan setiap hal yang harus disimpan ke dalam entitas (hanya untuk pengujian, untuk memastikan ia mengambil data yang sesuai) dan sesuai log - saya dapat melihat bahwa ia mendapatkan data yang sesuai. Namun bagian kedua sepertinya mencoba menyimpan rekor MetaMiles juga. Saya tidak ingin melakukan ini. Entitas MetaMiles hanyalah entitas tempat saya mendapatkan data - tidak perlu dilakukan penyimpanan apa pun. Bagaimana cara saya menentukan hanya untuk menyimpan entitas UserMiles dan TIDAK menyimpan entitas MetaMiles (tempat saya mengambil informasi dari aslinya)?
Kode tombol saya terlihat seperti ini:
//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];
}
Tidak terlalu paham dengan CoreData karena saya masih mempelajari semua ini. Di satu sisi aku merasa sudah mulai terbiasa, tapi kemudian hal-hal konyol seperti ini membuatku berpikir aku mundur 3 langkah.
Semua bantuan dihargai.