在发布这个相当简单的问题之前,我已经花了至少2个小时的时间。当json文件位于应用程序包内时,以下代码有效。
if let file = Bundle.main.url(forResource: "data", withExtension: "json") {....
我正在以这种方式阅读json文件......
let myData = try Data(contentsOf: file as URL)
我无法从“/ Library / Application Support / AppFolder / data.json”访问该文件的相同副本。
以下不起作用
let filepath = "/Library/Application Support/AppFolder/data.json"
if let file = NSURL(string: filepath) {...
答案 0 :(得分:1)
除了必须始终使用NSURL(fileURLWithPath...)
创建文件系统中的URL之外,建议使用专用API检索特定系统文件夹:
let applicationSupportFolderURL = try! NSFileManager.defaultManager().URLForDirectory(.ApplicationSupportDirectory,
inDomain: .LocalDomainMask,
appropriateForURL: nil,
create: false)
let jsonDataURL = applicationSupportFolderURL.URLByAppendingPathComponent("AppFolder/data.json")
或在Swift 3中(相当短)
let applicationSupportFolderURL = try! FileManager.default.url(for: .applicationSupportDirectory,
in: .localDomainMask,
appropriateFor: nil,
create: false)
let jsonDataURL = applicationSupportFolderURL.appendingPathComponent("AppFolder/data.json")
答案 1 :(得分:0)
尝试:NSURL.init(fileURLWithPath: "your_path")
string:
生成一个NSURL,表示给定的字符串。因此,字符串“http://www.google.com”和网址代表http://www.google.com。
fileURLWithPath:
获取路径,而不是URL,并使用file:// URL生成表示路径的NSURL。因此,如果您提供/foo/bar/baz
,则网址将代表file:///foo/bar/baz
。