Копирование файла из пакета в неработающие документы (ошибка какао 512)

Я пытаюсь просто скопировать мою базу данных sqlite3 в каталог документов. Я получаю Cocoa Error 512 и я понял, что это не действительный каталог (или что-то в этом роде.

Файл базы данных находится в папке «Мои ресурсы» в XCode. (Имя файла верное)

Вот код, который я пытаюсь использовать:

 -(void) checkAndCreateDatabase { BOOL success; NSFileManager *fileManager = [NSFileManager defaultManager]; NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDir = [documentPaths objectAtIndex:0]; //databasePath + databaseName is declared in the header databaseName = @"WaypointDatabase.sql"; databasePath = [documentsDir stringByAppendingPathComponent:databaseName]; success = [fileManager fileExistsAtPath:databasePath]; if(success) { NSLog(@"Database exists"); return; } else NSLog(@"Database does not exists"); NSString *databasePathFromApp = [[NSBundle mainBundle] pathForResource:@"WaypointDatabase" ofType:@"sql"]; if(databasePathFromApp == nil) { NSLog(@"ERROR: IT IS NIL"); } NSError* error = nil; NSLog(@"Path in bundle:\n%@\n\n", databasePathFromApp); NSLog(@"Path to copy to:\n%@\n\n", databasePath); [fileManager copyItemAtPath:databasePathFromApp toPath:databasePath error:&error]; [fileManager release]; if (error) { NSLog(@"%@\n\n", error); NSLog(@"%@", [error userInfo]); } } 

И вывод на консоль, который я получаю:

2011-10-30 10: 36: 13.242 xxxx [6726: 707] База данных не существует
2011-10-30 10: 36: 13.249 xxxx [6726: 707] Путь в комплекте:
/var/mobile/Applications/FF654016-4257-47BB-99FE-55DB5453BBC6/xxxx.app/WaypointDatabase.sql

2011-10-30 10: 36: 13.252 xxxx [6726: 707] Путь для копирования:
/var/mobile/Applications/FF654016-4257-47BB-99FE-55DB5453BBC6/Documents/WaypointDatabase.sql

2011-10-30 10: 36: 13.268 xxxx [6726: 707] Ошибка домена = NSCocoaErrorDomain Code = 512 «Операция не может быть выполнена. (Ошибка какао 512.)» UserInfo = 0xe8b7cd0 {NSUserStringVariant = (Копировать), NSFilePath = / var / mobile / Applications / FF654016-4257-47BB-99FE-55DB5453BBC6 / xxxx.app / WaypointDatabase.sql, NSDestinationFilePath = / var / mobile / Applications / FF654016-4257-47BB-99FE-55DB5453BBC6 / Documents / WaypointDatabase.sql , NSUnderlyingError = 0xe8b7ee0 «Операция не может быть выполнена. Не каталог»}

2011-10-30 10: 36: 13.272 xxxx [6726: 707] {NSDestinationFilePath = "/var/mobile/Applications/FF654016-4257-47BB-99FE-55DB5453BBC6/Documents/WaypointDatabase.sql"; NSFilePath = "/var/mobile/Applications/FF654016-4257-47BB-99FE-55DB5453BBC6/xxxx.app/WaypointDatabase.sql"; NSUnderlyingError = "Error Domain = NSPOSIXErrorDomain Code = 20 \" Операция cann \ U2019t будет завершена. Не каталог \ ""; NSUserStringVariant = (Копировать); }

Я полагаю, что это должно быть связано с получением путей к каталогам или чем-то еще, но застряли на этом несколько дней.

Обратите внимание, что это отлично работает и без ошибок на симуляторе.

Где я мог поступить неправильно?

[ОБНОВИТЬ]

Может ли это быть из-за того, что каталог Documents folder не существует? Как я собираюсь создать / проверить его?

[ОБНОВЛЕНИЕ 2]

Я сделал некоторые другие тесты, используя

 NSFileManager *fileManager = [NSFileManager defaultManager]; NSError *err = nil; NSArray *dirArr = [fileManager contentsOfDirectoryAtPath:documentsDir error:&err]; NSLog(@"~~Contents:\n%@",dirArr); NSLog(@"~~Error: \n%@",err); 

И удивительно, что он дал Cocoa Error 256 а также сказал «Не каталог». Это почти так, как если бы Documents directory does not exist. But it does, according to Documents directory does not exist. But it does, according to NSSearchPathForDirectoriesInDomains`

Вот результат, который я получил

2011-10-30 10: 59: 16,934 xxxx [6774: 707] ~~ Содержание:
(ноль)
2011-10-30 10: 59: 16.936 xxxx [6774: 707] ~~ Ошибка:
Error Domain = NSCocoaErrorDomain Code = 256 «Операция не может быть выполнена (ошибка Cocoa 256.)« UserInfo = 0x10052580 {NSUserStringVariant = (Папка), NSFilePath = / var / mobile / Applications / FF654016-4257-47BB-99FE- 55DB5453BBC6 / Documents, NSUnderlyingError = 0x10054a50 «Операция не может быть выполнена. Не каталог»}

2 Solutions collect form web for “Копирование файла из пакета в неработающие документы (ошибка какао 512)”

Проблема решена путем установки нестандартного идентификатора пакета в файле info.plist

Я использовал идентификатор Bundle из iTunes Connect для этого конкретного приложения. Теперь все работает отлично.

Попробуйте изменить

 [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:databaseName]; 

для

 [[NSBundle mainBundle] pathForResource:@"WaypointDatabase" ofType:@"sql"]; 

и убедитесь, что это не возвращает nil чтобы убедиться, что это не то, что происходит неправильно, кроме того, что он выглядит хорошо для меня при первом просмотре.

  • Задержка ссылок UIwebView
  • Не удалось получить текущий ViewController внутри applicationWillResignActive
  • Пользовательский делегат
  • Можно ли упаковать C-структуру в NSKeyedArchiver в Cocoa?
  • Могу ли я получить NSURL из пакета XCAssets?
  • Пользовательский QLPreviewController или UIDocumentInteractionController, который может перехватывать события касания
  • Использовать autorelease при настройке свойства сохранения с помощью точечного синтаксиса?
  • Как вы ориентируетесь на отдельные UIView при разработке своего UIAppearance?
  • pushViewController Принимая слишком много, чтобы показать вид
  • Расширение iOS 8: как использовать xib внутри Cocoa Touch Framework в расширениях?
  • Как получить значения после символа «\ n»?
  • Interesting Posts

    Пользовательское имя клавиатуры без схемы «KeyboardName – HostAppName»

    Как оживить высоту ряда в титановом iphone

    Хранение и извлечение int64_t из NSDictionary: NSNumber vs NSString

    Как добавить горизонтальный интервал и вертикальное расстояние программно в ios?

    Контроллер навигации по раскадровке и контроллер панели вкладок

    Организатор XCode 4.6 не символизирует трассировку стека моего приложения

    iOS: доступность – startNotifier не работает после возврата в приложение

    Удаление всех номеров из строки

    Не может подкласс UIColor?

    Оператор if с оператором && проверяет наличие второго значения?

    NSInvalidArgumentException: «Непризнанный селектор, отправленный в экземпляр»

    StoreKit's SKStoreProductViewController оставляет пространство между навигационной панелью и представлением?

    Не получить indexPath для прослушивания UISwitch в UITableViewCell

    Как центрировать выравнивание масштабного масштабирования видового экрана для iphone

    схема не настроена для тестового действия (проект xosode iOS)

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.