我遇到了一个奇怪的问题。我刚刚在我的 iPhone 项目中添加了一个测试数据库,名为“pharmacies.sqlite3”。我已将该文件复制到我的 iPhone 项目的 SUPPORTING FILES 文件夹中。
但即使我将自定义 db 文件复制到 iPhone 上的文档文件夹中,我还是收到一条消息,指出我要查找的表不存在。即使它可用。我稍微重构了我的代码:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// FMDB
self.databaseName = [[NSString alloc] initWithString:@"pharmacies.sqlite3"];
NSString *documentsDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
self.databasePath = [documentsDir stringByAppendingPathComponent:self.databaseName];
[self createAndCheckDatabase];
[self getPharmacies];
}
这是我的辅助方法:
- (void)createAndCheckDatabase
{
BOOL success;
NSFileManager *fileManager = [NSFileManager defaultManager];
success = [fileManager fileExistsAtPath:self.databasePath];
if (success) {
return;
}
NSString *databasePathFromApp = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:self.databaseName];
[fileManager copyItemAtPath:databasePathFromApp toPath:self.databasePath error:nil];
}
- (void)getPharmacies
{
FMDatabase *db = [FMDatabase databaseWithPath:self.databasePath];
[db setLogsErrors:YES];
[db setTraceExecution:YES];
[db open];
FMResultSet *results = [db executeQuery:@"SELECT * FROM pharmacies"];
while ([results next]) {
NSString *name = [results stringForColumn:@"name"];
NSLog(@"Apotheke: %@", name);
}
[db close];
}
但是仍然没有找到任何桌子..我错过了什么吗?没有错误消息表明复制不起作用....