以下Swift 2示例给出了此错误:
String类型的值没有成员' stringByAppendingPathComponent'
Swift 3需要更改什么?
答案 0 :(得分:5)
Apple试图将所有人从路径字符串范式转移到URL(即file:///path/to/file.text
)。 Swift API几乎删除了所有path
,转而使用URL
。
您仍然可以在Objective-C(NSString
)中找到它:
let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as String
let getImagePath = NSString.path(withComponents: [paths, "fileName"])
Swifty方式越多:
let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as String
let url = URL(fileURLWithPath: paths).appendingPathComponent("fileName")
答案 1 :(得分:1)
我个人喜欢从App代表处获取此值。把这段代码(像普通函数一样独立)放入AppDelegate.swift。
lazy var applicationDocumentsDirectory: URL = {
let urls = FileManager.default.urls(for: FileManager.SearchPathDirectory.documentDirectory, in: FileManager.SearchPathDomainMask.userDomainMask)
return urls[urls.count-1]
}()
因此,在所有文件中,您都可以这样使用它:
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let imageUrl = appDelegate.applicationDocumentsDirectory.appendingPathComponent("YourFileName")
let imageUrlString = imageUrl.urlString //if String is needed