Вы копируете файл, даже если файл уже существует в Документе, я думаю, что NSFileManager copyFileAtPath: вернет НЕТ, если файл уже существует в месте назначения, следовательно, провалит проверку и вызовет NSAssert
success = [fileManager fileExistsAtPath:writableDB];
if (success)
{
return;
}
Таким образом, файл не копируется, если он уже существует в вашем документе. Если это и является причиной ошибки, можете ли вы на самом деле опубликовать утверждение, [error localizedDescription] по крайней мере скажет вам, что с ним не так в данный момент.
Edit:
- (void) createEditableDatabase
{
BOOL success;
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;
NSString *writableDB = [[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"] stringByAppendingPathComponent:@"yc_ch.db"];
NSLog(@"Document path = %@", writableDB);
success = [fileManager fileExistsAtPath:writableDB];
if (success)
{
return;
}
NSString *defaultPath = [[NSBundle mainBundle] pathForResource:@"yc_ch" ofType:@"db"];
NSLog(@"defaultPath = %@", defaultPath);
error = nil;
success = [fileManager copyItemAtPath:defaultPath toPath:writableDB error:&error];
if (!success)
{
NSAssert1(0, @"Failed to create writable database file:%@", [error localizedDescription]);
}
if (error)
{
NSLog(@"error = %@", [error localizedDescription]);
}
}