我正在使用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目录吗?
答案 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")
}