Разработка программного обеспечения - ОЧЕНЬ небольшое подмножество компьютерных наук.
Иногда кажется, что люди думают, что эти два понятия являются синонимами, но на самом деле в компьютерных науках есть так много аспектов, с которыми средний разработчик редко (если вообще когда-либо) сталкивается. В зависимости от карьерных целей, я думаю, что есть много выпускников CS, которые, вероятно, были бы лучше с каким-то образованием в области разработки программного обеспечения.
Я высоко ценю образование, имею степень бакалавра в области компьютерных наук и изучаю MS в течение неполного рабочего дня, но я думаю, что многие люди, получившие эти степени, рассматривают эту степень как средство для достижения цели и очень мало получают. Я знаю множество людей, которые прошли тот же курс по системному программному обеспечению, который я прошел, написали тот же самый ассемблер, который я написал, и по сей день не видят никакой ценности в том, что они сделали.
Нет автоматического (т.е. встроенного ) для импорта данных в контекст Core Data.
Я подозреваю, что это связано с тем, что Core Data на самом деле является структурой управления графом объектов (которая просто позволяет сохранить этот граф объекта на диске), а отображение между данными и экземплярами объекта зависит от схемы (и поэтому потребуется хоть какой-то код).
Если у вас уже есть данные в другом формате, вы должны прочитать раздел Руководства по программированию Core Data об импорте данных в контекст Core Data . Если у вас еще нет данных в другом формате, вам придется писать код в любом случае (для создания промежуточного формата или для непосредственного заполнения контекста).
Наконец, хотя это не совсем публичный API, с форматом Core Data XML довольно легко работать вручную или с помощью любого количества инструментов на основе XML. В зависимости от сложности ваших данных, вы можете реконструировать схему XML, достаточную для создания постоянного хранилища на основе XML. Затем вы можете перенести это хранилище в постоянное хранилище SQLite, и все готово.
В настоящее время, насколько мне известно, вам нужно написать собственный код для заполнения базы данных.
Это действительно похоже на обратную сторону, я бы действительно хотел увидеть инструмент для пакетной обработки (оболочка ) предварительное заполнение источников данных, предназначенных для использования CoreData.
Вот простой способ предварительно загрузить хранилище Core Data с помощью списков.
Составьте список свойств, содержащий массив словарей. Сделайте ключи каждого словаря соответствующими ключам вашего управляемого объекта.
Затем вызовите этот метод при первом запуске приложения:
- (void)loadDataFromPropertyList {
NSString *path = [[NSBundle mainBundle] pathForResource:@"someFile" ofType:@"plist"];
NSArray *items = [NSArray arrayWithContentsOfFile:path];
NSManagedObjectContext *ctx = self.managedObjectContext;
for (NSDictionary *dict in items) {
NSManagedObject *m = [NSEntityDescription insertNewObjectForEntityForName:@"TheNameOfYourEntity" inManagedObjectContext:ctx];
[m setValuesForKeysWithDictionary:dict];
}
NSError *err = nil;
[ctx save:&err];
if (err != nil) {
NSLog(@"error saving managed object context: %@", err);
}
}
Вызовите loadDataFromPropertyList
при первом запуске приложения, включив следующий код в реализацию приложения : (UIApplication *) application didFinishLaunchingWithOptions: (NSDictionary *) launchOptions
:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if (![defaults objectForKey:@"firstRun"])
{
[defaults setObject:[NSDate date] forKey:@"firstRun"];
[[NSUserDefaults standardUserDefaults] synchronize];
[self loadDataFromPropertyList];
}