FMDB databaseWithPath:不写入磁盘

Posted

技术标签:

【中文标题】FMDB databaseWithPath:不写入磁盘【英文标题】:FMDB databaseWithPath: not writing to disk 【发布时间】:2013-03-24 06:02:39 【问题描述】:

fmdb 文档说,如果您将文件系统路径传递给 databaseWithPath: 它将为您创建一个文件:

    文件系统路径。该文件不必存在于磁盘上。如果它不存在,则会为您创建。

我正在使用此代码获取我的文件系统路径:

[[NSHomeDirectory() stringByAppendingPathComponent:@"Desktop"] stringByAppendingPathComponent:@"file.db"];

并尝试像这样设置我的数据库:

FMDatabase *aDB = nil;

if (aLanguageDBPath) 
        aDB = [FMDatabase databaseWithPath:aLanguageDBPath];

结果是一个有效的 FMDatabase 对象,它没有像宣传的那样被写入磁盘。我是否误解了文档中的解释?我应该如何动态创建数据库并将其写入磁盘?

谢谢!

【问题讨论】:

【参考方案1】:

刚刚发现在调用[db open]; 之前实际上并未在磁盘上创建数据库。

【讨论】:

【参考方案2】:

尝试使用 NSDocumentDirectory。用这个改变你的路径代码:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                                     NSUserDomainMask,
                                                     YES);
NSString dbPath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"file.db"];

【讨论】:

已经尝试过了。仍然没有运气。我在内存中得到了 db 对象,但我无法将它写入磁盘。

以上是关于FMDB databaseWithPath:不写入磁盘的主要内容,如果未能解决你的问题,请参考以下文章

使用 fmdb 写入 sqlite db?

在同一个后台线程上运行 FMDB 进程?

用 FMDB 快速保存 NSI​​mage

IOS小技巧——使用FMDB时如何把一个对像中的NSArray数组属性存到表中

FMDB 不显示任何东西 - 迅速

FMDB 更新语句不使用我的值