Я нашел много объяснений и помог здесь, в стеке, но пока не повезло.Основные данные, заполненные в Симуляторе, но не переходящие на устройство
В основном, мой myapp.sqlite (который я предварительно заполнял) отлично работает на симуляторе, но когда я запускаю его на iPad, он пуст.
Таким образом, после попытки различных вещей, это ближе я получил:
- Я скопировать БД SQLite в Bundle, но я переместить его в папку Library.
На моем AppDelegate я это делаю:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
NSLog(@"Starting to save the DB to another location");
NSString *libraryPath = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) lastObject];
NSString *targetPath = [libraryPath stringByAppendingPathComponent:@"myDB.sqlite"];
if (![[NSFileManager defaultManager] fileExistsAtPath:targetPath]) {
// database doesn't exist in your library path... copy it from the bundle
NSString *sourcePath = [[NSBundle mainBundle] pathForResource:@"myDB" ofType:@"sqlite"];
NSError *error = nil;
if (![[NSFileManager defaultManager] copyItemAtPath:sourcePath toPath:targetPath error:&error]) {
NSLog(@"Error: %@", error);
}
}
return YES;
}
затем на PersistentStoreCoordinator, я делаю это
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
{
if (_persistentStoreCoordinator != nil) {
return _persistentStoreCoordinator;
}
NSString *libraryPath = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) lastObject];
NSString *targetPath = [libraryPath stringByAppendingPathComponent:@"myDB.sqlite"];
// NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"naccApp.sqlite"];
// NSURL *storeURLLocal = [[NSBundle mainBundle] URLForResource:@"myDB" withExtension:@"sqlite"];
NSURL *storeURL = [NSURL URLWithString:targetPath];
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]);
abort();
}
return _persistentStoreCoordinator;
}
Когда я пытаюсь использовать DB, (fetchRequest), я получаю ошибка:
В базе данных CoreData SQL хранятся только URL-адреса файлов поддержки (получены /var/mobile/Applications/2EB2AADD-DF9D-475F-A05E-BB138502471F/Library/myDB.sqlite).
Сообщение ясно, но я пробовал почти всю помощь здесь и до сих пор ничего.
Излишне говорить, что я новичок в Core Data, поэтому, пожалуйста, простите невежество.
О, я использую Xcode 5.
Thx
Работал ... наконец! Спасибо, что заметили это. – Elkucho