gpt4 book ai didi

iphone - FMDB 错误 1 ​​: no such table

转载 作者:行者123 更新时间:2023-12-03 20:52:15 26 4
gpt4 key购买 nike

我遇到了一个奇怪的问题。我刚刚向我的 iPhone 项目添加了一个测试数据库,名为“pharmacies.sqlite3”。我已将该文件复制到我的 iPhone 项目中的 SUPPORTING FILES 文件夹中。

但是,尽管我将自定义数据库文件复制到 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];
}

但是仍然没有找到 table ..我错过了什么吗?没有错误消息表明复制不起作用......

最佳答案

我遇到了同样的问题,结果发现问题是 sqlite 数据库没有出现在“复制捆绑资源”列表中(在“选择项目”下,然后单击“构建阶段”),因此它没有与其余的一起打包资源。我正在使用 XCode 6。

我认为发生的情况是 fmdb open 函数创建了一个空数据库。当您查询时,它会提示您的表丢失,因为您自己的数据库从未被复制。

关于iphone - FMDB 错误 1 ​​: no such table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10972143/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com