2011-12-20 2 views
-1

Запуск приложения на iPhone работает нормально, но только если он подключен к Mac/связанному с Xcode. Если я попытаюсь запустить его после того, как отключил его (после остановки Run), Core Data больше не работает. Ни Build, ни Отладка Работы по настройке (Продукт -> Изменить схему ... -> Запустить xy.app -> Информация -> Конфигурация сборки). Мои настройки xcdatamodel: Тип файла: По умолчанию Основные данные модели Расположение: По отношению к группеТестирование основных данных на iPhone без подключения к Xcode

Любые идеи?

Приветствия, Saeppi


Извините за не более конкретно о моей проблеме. Там нет сбоев, изменения, которые, как я думал, я сделал с базовой моделью данных, просто не произошло. Прочитав немного больше о SQLite и о том, как он работает с Core Data, я признаю, что совершил очень тупую ошибку: я скопировал файл * .sqlite из учебника и импортировал его в свой проект Xcode и скопировал его в папку приложения (а затем переименовать его, конечно). Удаление SQLite файла вызывает теперь следующее сообщение об ошибке:

error: /Users/myName/Documents/myApp/myApp.sqlite: No such file or directory

Мой PersistentStoreCoordinator:

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator { 

if (persistentStoreCoordinator != nil) { 
    return persistentStoreCoordinator; 
} 

NSURL *storeUrl = [NSURL fileURLWithPath: [[self applicationDocumentsDirectory] stringByAppendingPathComponent: @"MyApp.sqlite"]]; 

NSError *error = nil; 
persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]]; 
if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:nil error:&error]) { 

    NSLog(@"Unresolved error %@, %@", error, [error userInfo]); 

    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"ErrorKey", nil) 
                message:NSLocalizedString(@"ErrorDBKey", nil) 
                delegate:nil 
              cancelButtonTitle:@"OK" 
              otherButtonTitles:nil, nil]; 
    [alert show]; 
    [alert release]; 
}  
return persistentStoreCoordinator; 

}

и каталог моего приложения:

- (NSString *)applicationDocumentsDirectory { 

    return [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; 
} 

Я думал, что базовые данные будут генерировать новый файл sqlite после его удаления из папки. Какая ошибка в рассуждении?

+0

Можно ли объяснить что-то более похожее на то же? – Sarah

+2

* «Не работает» * является чрезвычайно бесполезным описанием. Что происходит? Это крушение? Дать результаты, которых вы не ожидали? Не удается запустить? – Jim

+1

Как вы можете быть уверены, что это основная проблема? Вам действительно нужно предоставить нам более подробную информацию или мы не сможем вам помочь. – sosborn

ответ

0

Не работает ли он на устройстве? Вы можете подключить устройство и проверить отчет о сбое в журналах устройств. Это даст вам лучшее представление о том, что происходит. Во-вторых, попробуйте закрыть приложение из фона и запустить.

Я бы предложил проверить журналы сбоев на устройстве, если он не может создать или найти основные данные, он даст сообщение типа: store missing или что-то в этом роде.

+0

Там нет аварии, следовательно, нет журнала аварий. Что вы подразумеваете под словом «выйти из приложения из фона»? – saeppi

0

Скорее всего, вы открываете свой файл db в главном комплекте. Основной пакет доступен только для чтения. Ваш файл db должен находиться в папке документа приложения.

Оформить заказ SO post

+0

Нет, в соответствии с песочницей файл sqlite находится в папке «Документы». Любые другие идеи? – saeppi

Смежные вопросы