база данных приложений для iPhone - PullRequest
2 голосов
/ 14 февраля 2011

Таким образом, я могу получить доступ к базе данных SQLite только для чтения в приложении для iPhone / iPod (Objective-C), но я пишу новое приложение, которое будет иметь доступную для записи базу данных.Очевидно, что файл r / w должен находиться в каталоге, доступном для записи пользователем.Мой вопрос заключается в том, стоит ли отправлять пустую базу данных вместе с приложением и копировать ее в папку r / w или создавать базу данных r / w на лету при первом запуске приложения?

1 Ответ

1 голос
/ 14 февраля 2011

Вы можете сделать и то и другое, но вам будет гораздо проще (и меньше подвержено ошибкам) ​​создать пустую базу данных, поместить ее в свой пакет и затем сделать это в файле AppDelegate.m:

- (void)prepareDatabase
{
    //add Database Versioning check to see if the resources database is newer
    // generally as simple as naming your database with a version on the end

    NSFileManager *filemanager = [NSFileManager defaultManager];
    NSString *databasePath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingString:@"/YOURDATABASE.s3db"];
    if(![filemanager fileExistsAtPath:databasePath]) {
        //Database doesn't exist yet, so we copy it from our resources
        NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingString:@"/YOURDATABASE.s3db"];
        if([filemanager copyItemAtPath:defaultDBPath toPath:databasePath error:nil]) {
            NSLog(@"Database Copied from resources");           
        } else {
            NSLog(@"Database copy FAILED from %@ to %@",defaultDBPath,databasePath);
        }
    }
}

Тогда в вашем applicationDidFinishLaunching: методе вызовите это:

[self prepareDatabase];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...