iOS загрузить базу данных sqlite и заменить существующую

Мне нужно загрузить базу данных и заменить существующую в песочнице: Вот предполагаемый способ сделать это:

DBHelpers *help=[[DBHelpers alloc] init];


    NSString *targetPath=[[help DocumentsDirectory] stringByAppendingPathComponent:DATABASE_NAME];


    NSLog(@"Target path: %@", targetPath);
    NSFileManager *fileManager=[NSFileManager defaultManager];

    //if([fileManager fileExistsAtPath:targetPath])
    //{
      //  NSLog(@"Exists");
       // return;
    }
    NSString *sourcePath=[help PathForResource:DATABASE_NAME];
    NSLog(@"SourcePath path: %@", sourcePath);
    NSError *error;
  NSData *data=[NSData dataWithContentsOfURL:[NSURL URLWithString:@"www.hello.com/mydb.sqlite"]];
    [data writeToFile:targetPath atomically:NO];

//  [fileManager copyItemAtPath:sourcePath toPath:targetPath error:&error];
    NSLog(@"Error %@", error);

person Vladimir Stazhilov    schedule 03.02.2012    source источник


Ответы (1)


Рассмотрим эти шаги:

NSData *fetchedData = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://www.myserver.com/files/DBName.sqlite"]]];
NSString *documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDire ctory, NSUserDomainMask, YES) lastObject];
NSString *filePath = [documentsPath stringByAppendingPathComponent:@"DBName.sqlite"];
[fetchedData writeToFile:filePath atomically:YES];

из ветки форума iphonedevsdk.

person p.campbell    schedule 03.02.2012
comment
Это больше не работает. По сути, я делаю то же самое в этом вопросе, но получаю ошибка о том, что загружаемая база данных не является базой данных SQLite, когда я перезапускаю свое приложение. - person GeneralMike; 26.04.2013