Swift:fileExistsAtPath返回TRUE

时间:2015-01-24 10:06:02

标签: sqlite swift ios8

我正在试验一个检测文件是否存在的奇怪问题。

我正在使用SQLite,所以我的App中有一个DB文件,它是我的目标成员项目的成员,它只是数据库结构。

在我的AppDelegate中,我正在检查文件是否存在:

let fm = NSFileManager.defaultManager()

var docDir = ""

docDir = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as String

let dbName:String = String.fromCString("db22.sqlite3")!

let path = docDir.stringByAppendingPathComponent(dbName)

在这一点上创建了文件(不是这个想法),当我打印路径时,文件的大小为0。

println("Database path: \(path)")
  

-rw-r - r-- 1 LLL staff 0 Jan 24 22:49 / Users / LLL / Library / Developer / CoreSimulator / Devices / F18F613D-B032-4B0A-87FC-3E484FC0C024 / data / Containers / Data /应用/ 74FE784B-F131-4C60-9846-21D115E08594 /文档/ db22.sqlite3

在运行应用程序之前:

  

$ find / Users / LLL / Library / Developer / -name db22.sqlite3

没有。

所以我的下一个if是为了检查文件是否存在,总是返回TRUE:

if !(fm.fileExistsAtPath(path)) {
...
...
fm.copyItemAtPath(from, toPath: path, error: &error)
...
...

我尝试使用模拟器中的重置内容和设置,并关闭项目并删除Library / Developer中的所有文件和目录// Xcode / DerivedData /

但结果是一样的(产品 - >也在XCode中清理)。

之前我正在使用这个文件,工作得很好,将它复制到我的DocumentDirectory以修改我的数据库,我删除了因为我在表中更改了某些内容,然后突然不再工作了。

如果我尝试将名称dbName变量更改为我以前从未使用过的东西,那么就不会创建该文件,并且fileExistsAtPath返回FALSE,因为它应该与前一个一样。

我还从我的XCode项目中删除了db22.sqlite3,我清理并清除了所有设置,删除了DerivedData中的所有文件......但结果相同。

有什么想法吗?

先谢谢你们!

0 个答案:

没有答案