Форум программистов, компьютерный форум CyberForum.ru

Программирование iOS/iPhone

Войти
Регистрация
Восстановить пароль
 
Noobass
0 / 0 / 0
Регистрация: 15.10.2012
Сообщений: 100
#1

Не получается прочитать Базу Данных из ресурсов приложения - Программирование iOS/iPhone

31.05.2013, 17:20. Просмотров 868. Ответов 16
Метки нет (Все метки)

Вот функция:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
-(void) initDataBase
{
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *dbFileName = @"myBase.sqlite";
    NSString *databasePath = [documentsDirectory stringByAppendingPathComponent:dbFileName];
    
    dataBaseFullPath = databasePath;
    // Check to see if the database file already exists
    BOOL databaseAlreadyExists = [[NSFileManager defaultManager] fileExistsAtPath:databasePath];
    
    if (!databaseAlreadyExists)
    {
        NSArray *pathsDB = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask, YES);
        NSString* documentsDir = [pathsDB objectAtIndex:0];
        
        NSString *storePath = [documentsDir stringByAppendingPathComponent:@"myBase.sqlite"];
        
        NSFileManager *fileManager = [NSFileManager defaultManager];
        
        if (![fileManager fileExistsAtPath:storePath])
        {
            
            NSString *defaultStorePath = [[NSBundle mainBundle] pathForResource:@"myBase" ofType:@"sqlite"];
            if (defaultStorePath) {
                [fileManager copyItemAtPath:defaultStorePath toPath:storePath error:NULL];
            }
        }
    }
}
Эта функция инициализирует БД и связывает ее с приложением. Если запуск приложения впервые, то функция достает БД из недр ресурсов. Раньше функция работала на отлично, но в один прекрасный момент "сломалась", а именно когда я перезалил БД. Перезалил правильно (9000+ проверял), все норм, но вот функция не хочет инициализировать БД, и переменная
C#
1
defaultStorePath
почему-то пустая.
Особенность функции заключается в том, что она прекрасно работает, если вместо БД использовать обыкновенную картинку из проекта. Так вот - в чем магия??? Почему функция картинку видит, а БД - нет?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.05.2013, 17:20     Не получается прочитать Базу Данных из ресурсов приложения
Посмотрите здесь:

Objective-C UTF-8, не получается вывести иероглифы на экран
Какую базу данных лучше выбрать? Objective-C
Настроить компиллятор Xcode, для включения ресурсов в приложение Objective-C
Не получается задать contentSize
Не получается открыть Базу Данных
Хочу создать в интернете базу данных и просматривать через İphone
Как прочитать изображение в массив Objective-C
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
mobidevelop
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
31.05.2013, 17:44     Не получается прочитать Базу Данных из ресурсов приложения #2
Файловая система iOS регистрозависимая. Т.е. myBase.sqlite и MyBase.sqlite - разные файлы. Может быть, в этом косяк.
Pro2005
44 / 44 / 3
Регистрация: 27.05.2013
Сообщений: 163
31.05.2013, 18:11     Не получается прочитать Базу Данных из ресурсов приложения #3
Ты уверен что файл называется myBase.sqlite ... проверь расширение файла, оно точно sqlite ?
Удали myBase.sqlite из проекта и добавь еще раз... Сделай clear в xcode и собери еще раз..
Также если БД изменилась, то на девайсе могла сохраниться старая БД (в папке Documents)... удали полность приложение с устройства.
Noobass
0 / 0 / 0
Регистрация: 15.10.2012
Сообщений: 100
03.06.2013, 12:28  [ТС]     Не получается прочитать Базу Данных из ресурсов приложения #4
mobidevelop, 300 раз проверил название, уверен на сто процентов, что косяка нет. Проверял даже еще один человек, тоже проблемы не нашел

Pro2005, чистил, удалял контент и настройки, все делал - не помогает И самое странное то, что раньше работало! Просто перезалил БД и все - ппц. Логического объяснения найти не получается

Добавлено через 31 минуту
Что еще странно, в режиме дебага когда смотришь код, переменная defaultStorePath ведет себя очень странно. В этом куске кода
C#
1
2
3
4
NSString *defaultStorePath = [[NSBundle mainBundle] pathForResource:@"myBase" ofType:@"sqlite"];
            if (defaultStorePath) {
                [fileManager copyItemAtPath:defaultStorePath toPath:storePath error:NULL];
            }
переменная defaultStorePath получает определенное значение, но потом, когда доходит дело до блока if, ее значение сбрасывается к нулю. Объясните, в чем магия?
Pro2005
44 / 44 / 3
Регистрация: 27.05.2013
Сообщений: 163
03.06.2013, 12:50     Не получается прочитать Базу Данных из ресурсов приложения #5
C#
1
[fileManager copyItemAtPath:defaultStorePath toPath:storePath error:NULL];
замени на
C#
1
2
3
NSError *error;
[fileManager copyItemAtPath:defaultStorePath toPath:storePath error:&error];
NSLog(@"%@", [error localizedDescription]);
И посмотри что будет за ошибка....
mobidevelop
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
03.06.2013, 12:52     Не получается прочитать Базу Данных из ресурсов приложения #6
Проект в студию. Там 100500 причин может быть и 100499 от разгильдяйства (не сказать еще хужей). А такие только глазами найти можно
Noobass
0 / 0 / 0
Регистрация: 15.10.2012
Сообщений: 100
03.06.2013, 13:05  [ТС]     Не получается прочитать Базу Данных из ресурсов приложения #7
Pro2005, дак код в блок не заходит. Переменная defaultStorePath обнуляется (как будто файла в системе проекта попросту нет), и блок пропускается. Поэтому, внутри можно что угодно писать, все равно ничего не изменится

Добавлено через 1 минуту
mobidevelop, извиняюсь за нубской вопрос, но как здесь файл приложить к сообщению? Чет найти не могу
mobidevelop
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
03.06.2013, 13:14     Не получается прочитать Базу Данных из ресурсов приложения #8
В "Расширенном режиме" чуть ниже кнопки "Ответить" есть раздел "Дополнительные опции".
Noobass
0 / 0 / 0
Регистрация: 15.10.2012
Сообщений: 100
03.06.2013, 13:16  [ТС]     Не получается прочитать Базу Данных из ресурсов приложения #9
ану теперь
Вложения
Тип файла: zip Football Test.zip (5.27 Мб, 5 просмотров)
Noobass
0 / 0 / 0
Регистрация: 15.10.2012
Сообщений: 100
03.06.2013, 13:16  [ТС]     Не получается прочитать Базу Данных из ресурсов приложения #10
mobidevelop, вот, получилось
mobidevelop
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
03.06.2013, 13:22     Не получается прочитать Базу Данных из ресурсов приложения #11
См. картинку
Миниатюры
Не получается прочитать Базу Данных из ресурсов приложения  
Noobass
0 / 0 / 0
Регистрация: 15.10.2012
Сообщений: 100
03.06.2013, 13:27  [ТС]     Не получается прочитать Базу Данных из ресурсов приложения #12
mobidevelop, я клацнул, теперь вообще failed!

Добавлено через 3 минуты
mobidevelop, ой сорри, игнорируй
Pro2005
44 / 44 / 3
Регистрация: 27.05.2013
Сообщений: 163
03.06.2013, 13:28     Не получается прочитать Базу Данных из ресурсов приложения #13
Настройки target, далее "Build Phases" и в "Copy Bundle Resources"... Добавь туда свой myBase.sqlite.
Noobass
0 / 0 / 0
Регистрация: 15.10.2012
Сообщений: 100
03.06.2013, 13:28  [ТС]     Не получается прочитать Базу Данных из ресурсов приложения #14
mobidevelop, я затупил, скрин неправильно посмотрел) Сейчас попытаюсь сделать, как у тебя на картинке
mobidevelop
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
03.06.2013, 13:31     Не получается прочитать Базу Данных из ресурсов приложения #15
Там NSLog валится. Обнулять переменные надо прежде, чем совать их куда-либо
Objective-C
1
NSError *error = nil;
Noobass
0 / 0 / 0
Регистрация: 15.10.2012
Сообщений: 100
03.06.2013, 13:33  [ТС]     Не получается прочитать Базу Данных из ресурсов приложения #16
mobidevelop, блин, спасибо огромное!!! Я бы в жизни сам бы не сделал, так как тупо даже не знал, что в xcode есть подобная штука)
Pro2005, ОГРОМНОЕ СПАСИБО, что помогали мне! Теперь блин на всю жизнь запомню, что в Xcode есть такой список файлов
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.06.2013, 15:41     Не получается прочитать Базу Данных из ресурсов приложения
Еще ссылки по теме:

Не получается работать с собственным классом TableViewCell
Сохранение данных приложения Objective-C
Не получается связать два объекта Objective-C
Не получается ассоциировать view из tabcontroller с кодом Swift
Синнхронизация приложения с базой данных

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Dargo
1 / 1 / 0
Регистрация: 23.04.2013
Сообщений: 10
04.06.2013, 15:41     Не получается прочитать Базу Данных из ресурсов приложения #17
А ты добавь БД в таргет
Изображения
 
Yandex
Объявления
04.06.2013, 15:41     Не получается прочитать Базу Данных из ресурсов приложения
Ответ Создать тему
Опции темы

Текущее время: 03:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru