Базовые данные не работают на устройстве, только в iPhone Simulator - PullRequest
0 голосов
/ 01 апреля 2012

Я делаю приложение, которое использует Core Data Framework, но оно работает только в симуляторе iPhone.Я знаю настоящий мотив: файл основных данных сохраняется в каталоге iPhone Simulator.Я хочу изменить это, я беру архив типа sqlite и помещаю в Xcode (файлы поддержки), и я хочу загрузить данные, которые в нем содержатся.Как мне это сделать?

Мой код:

#pragma core data methods

-(NSManagedObjectModel *)managedObjectModel
{
    if(managedObjectModel!=nil)
    {
        return managedObjectModel;
    }
    NSURL *modelURL = [[NSBundle mainBundle]URLForResource:@"iGyn" withExtension:@"momd"];
    managedObjectModel = [[NSManagedObjectModel alloc]initWithContentsOfURL:modelURL];
    return managedObjectModel;

}


-(NSPersistentStoreCoordinator *)persistentStoreCoordinator
{
    if(persistentStoreCoordinator!=nil)
    {
        return persistentStoreCoordinator;
    }
    NSURL *storeURL = [[self applicationDocumentsDirectory]URLByAppendingPathComponent:@"iGyn.sqlite"];
    NSError *error = nil;
    persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc]initWithManagedObjectModel:[self managedObjectModel]];
    if(![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error])
    {
        NSLog(@"error...");
    }
    return persistentStoreCoordinator;

}


-(NSManagedObjectContext *)managedObjectContext
{
    if(managedObjectContext!=nil)
    {
        return managedObjectContext;
    }
    NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
    if(coordinator!=nil)
    {
        managedObjectContext = [[NSManagedObjectContext alloc]init];
        [managedObjectContext setPersistentStoreCoordinator:coordinator];
    }
    return managedObjectContext;
}



-(NSURL *)applicationDocumentsDirectory
{
    return [[[NSFileManager defaultManager]URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask]lastObject];
}
-(void)saveContext
{
    NSError *error = nil;
    NSManagedObjectContext *moc = self.managedObjectContext;
    if(moc!=nil)
    {
        if([moc hasChanges] && ![moc save:&error])
        {
            NSLog(@"error...");
        }
    }
}

Что я должен изменить на основные данные, чтобы работать на моем устройстве?У меня уже есть данные, сохраненные в моем файле sqlite.

...