使用Xcode 7 / Swift 2 writeToPath到Resources文件,调用不会失败,但不会写入数据

时间:2016-10-03 00:37:09

标签: swift xcode writetofile

我正在使用Xcode 7.3.1和Swift 2.0。我使用以下代码示例:

func writeToResourcesDataDir() {
    if let path = NSBundle.mainBundle().pathForResource("TestData", ofType: ".json") {
        let str = "Test String"
        do {
            try str.writeToFile(path, atomically: false, encoding: NSUTF8StringEncoding)
            print("writeToFile successful")
        } catch {
            print("writeToFile failed")
        }
    } else {
        print("Path does not exist")
    }
}

在Xcode下运行,参见" writeToFile成功"但是,也可以使用模拟器,我可以在Resources目录中显示TestData,文件没有字符串。
我还在Mac上使用了一个终端窗口来查看文件中的文件。资源目录和TestData文件为空(0字节)。
我知道我在正确的Resources目录中,因为目录中有另一个文件具有正确的数据,用于运行程序的其他部分。

我已经花了好几天时间查看其他关于来自writeToFile的数据的google条目无法正常工作,我已经尝试了所有修复或尝试找到的东西。

有人可以帮忙吗?

我添加了代码以接受来自writeToFile调用的布尔返回,并返回false。我不确定为什么会返回false但是没有调用catch。
我不知道如何在Swift 2.0中获取与此writeToFile相关的错误代码。< / p>

我也想知道这是否是写权限问题。

我应该使用Documents目录而不是Data目录吗?

1 个答案:

答案 0 :(得分:0)

尝试这样的事情。这是swift 2.3和xcode 8。

let filename = "yourjsonfile"
let documentDirectoryURL = try! NSFileManager.defaultManager().URLForDirectory(.DocumentDirectory, inDomain: .UserDomainMask, appropriateForURL: nil, create: true)
let filePath = documentDirectoryURL.URLByAppendingPathComponent(filename)
let fileExist = filePath?.checkResourceIsReachableAndReturnError(nil)
if (fileExist == true) {
    print("Found file")
} else {
    print("File not found")
}