在iOS中启动应用程序时如何复制sqlite数据库?

Tos*_*lji 12 database sqlite objective-c ios

每次启动应用程序时,我都希望从数据库位置复制我的sqlite数据库,并对我的iOS应用程序进行最新更新.

有什么办法吗?

was*_*sim 18

您可以在appdelegate中添加以下方法

- (void) copyDatabaseIfNeeded {

    //Using NSFileManager we can perform many file system operations.
    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSError *error;

    NSString *dbPath = [self getDBPath];
    BOOL success = [fileManager fileExistsAtPath:dbPath];

    if(!success) {

       NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"database.sqlite"];
       success = [fileManager copyItemAtPath:defaultDBPath toPath:dbPath error:&error];

       if (!success)
          NSAssert1(0, @"Failed to create writable database file with message '%@'.", [error localizedDescription]);
    }
}

- (NSString *) getDBPath
{   
    //Search for standard documents using NSSearchPathForDirectoriesInDomains
    //First Param = Searching the documents directory
    //Second Param = Searching the Users directory and not the System
    //Expand any tildes and identify home directories.

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES);
    NSString *documentsDir = [paths objectAtIndex:0];
    //NSLog(@"dbpath : %@",documentsDir);
    return [documentsDir stringByAppendingPathComponent:@"database.sqlite"];
}
Run Code Online (Sandbox Code Playgroud)

并使用启动方法调用此方法, [self copyDatabaseIfNeeded];希望这会有所帮助.