![]() |
斯文的紫菜汤 · Flutter——最详细(Map)使用教程_ ...· 4 天前 · |
![]() |
不拘小节的瀑布 · C#: 8.0 & 9.0 常用新特性开发者社区· 3 天前 · |
![]() |
满身肌肉的小刀 · java.net.SocketExcepti ...· 3 天前 · |
![]() |
性感的生菜 · C#计数List<string>中的连续重复 ...· 昨天 · |
![]() |
近视的橙子 · Java Review - ...· 17 小时前 · |
![]() |
年轻有为的开水瓶 · 河南理工大学魏绍亮一行到访我校智能制造工程专 ...· 7 月前 · |
![]() |
粗眉毛的柑橘 · ISRC 國際標準錄音錄影資料代碼查詢系統 ...· 1 年前 · |
![]() |
有胆有识的橡皮擦 · 译介:IGN日本站的《灌篮高手》影评 | ...· 1 年前 · |
![]() |
纯真的葡萄 · 全民国防凝聚全民力量 - 中国军网· 1 年前 · |
![]() |
气势凌人的大葱 · 【高合HiPhi X】高合HiPhi ...· 1 年前 · |
我的应用程序在Instagram上分享照片,为了做到这一点,它首先将其保存在一个临时目录中:
let writePath = NSTemporaryDirectory().stringByAppendingPathComponent("instagram.igo")
它可以在
Swift 1.2
上工作,但不能在
Swift 2.0
上工作。
给定的错误消息为:
stringByAppendingPathComponent不可用:请改用NSURL上的URLByAppendingPathComponent。
它适用于
NSString
,所以你可以这样使用它:
extension String {
func stringByAppendingPathComponent(path: String) -> String {
let nsSt = self as NSString
return nsSt.stringByAppendingPathComponent(path)
}
现在您可以使用此扩展,它将首先将您的
String
转换为
NSString
,然后执行操作。
你的代码将是:
let writePath = NSTemporaryDirectory().stringByAppendingPathComponent("instagram.igo")
下面是一些其他的使用方法:
extension String {
var lastPathComponent: String {
return (self as NSString).lastPathComponent
var pathExtension: String {
return (self as NSString).pathExtension
var stringByDeletingLastPathComponent: String {
return (self as NSString).stringByDeletingLastPathComponent
var stringByDeletingPathExtension: String {
return (self as NSString).stringByDeletingPathExtension
var pathComponents: [String] {
return (self as NSString).pathComponents
func stringByAppendingPathComponent(path: String) -> String {
let nsSt = self as NSString
return nsSt.stringByAppendingPathComponent(path)
func stringByAppendingPathExtension(ext: String) -> String? {
let nsSt = self as NSString
return nsSt.stringByAppendingPathExtension(ext)
}
来自 HERE 的引用。
对于swift 3.0:
extension String {
func stringByAppendingPathComponent1(path: String) -> String {
let nsSt = self as NSString
return nsSt.appendingPathComponent(path)
let writePath = NSTemporaryDirectory().stringByAppendingPathComponent(path: "instagram.igo")
extension String {
var lastPathComponent: String {
return (self as NSString).lastPathComponent
var pathExtension: String {
return (self as NSString).pathExtension
var stringByDeletingLastPathComponent: String {
return (self as NSString).deletingLastPathComponent
var stringByDeletingPathExtension: String {
return (self as NSString).deletingPathExtension
var pathComponents: [String] {
return (self as NSString).pathComponents
func stringByAppendingPathComponent(path: String) -> String {
let nsSt = self as NSString
return nsSt.appendingPathComponent(path)
func stringByAppendingPathExtension(ext: String) -> String? {
let nsSt = self as NSString
return nsSt.appendingPathExtension(ext)
}
看起来
stringByAppendingPathComponent
方法在Swift 2.0中被删除了,所以错误消息建议使用:
let writePath = NSURL(fileURLWithPath: NSTemporaryDirectory()).URLByAppendingPathComponent("instagram.igo")
更新:
URLByAppendingPathComponent()
已被
appendingPathComponent()
取代,因此请执行以下操作:
let writePath = NSURL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent("instagram.igo")
只需将字符串包装为
NSString
即可。
let writePath = (NSTemporaryDirectory() as NSString).stringByAppendingPathComponent("instagram.igo")
执行以下操作:
(("\(fileName)" as NSString).lastPathComponent as NSString).stringByDeletingPathExtension
适用于swift 2.0
// Get the documents Directory
func documentsDirectory() -> String {
let documentsFolderPath = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)[0]
return documentsFolderPath
// Get path for a file in the directory
func fileInDocumentsDirectory(filename: String) -> String {
let writePath = (documentsDirectory() as NSString).stringByAppendingPathComponent("Mobile")
if (!NSFileManager.defaultManager().fileExistsAtPath(writePath)) {
try NSFileManager.defaultManager().createDirectoryAtPath(writePath, withIntermediateDirectories: false, attributes: nil) }
catch let error as NSError {
print(error.localizedDescription);
return (writePath as NSString).stringByAppendingPathComponent(filename)
//# MARK: - Save Image in Doc dir
func saveImage (image: UIImage, path: String ) -> Bool{
let pngImageData = UIImagePNGRepresentation(image)
// let jpgImageData = UIImageJPEGRepresentation(image, 1.0) // if you want to save as JPEG
let result = pngImageData!.writeToFile(path, atomically: true)
print("\(result)")
print("\(path)")
return result
}
您可以改用URLByAppendingPathComponent()。请注意,您应该修剪路径字符串以删除“file://”前缀:
let uniqueFileName = NSUUID().UUIDString
let documentsDirectory = getDocumentsDirectoryURL()
if let path = documentsDirectory?.URLByAppendingPathComponent(uniqueFileName) {
var pathString = path.absoluteString
pathString = imagePathString.stringByTrimmingCharactersInSet(NSCharacterSet(charactersInString: "file://"))
func getDocumentsDirectoryURL() -> NSURL? {
let fileManager = NSFileManager()
if let docsDirectory = fileManager.URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask).first {
return docsDirectory
return nil
}
对于 Swift 3
let writePath = URL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent(directoryname).path
或者更好地创建此扩展:
extension String {
func appendingPathComponent(_ string: String) -> String {
return URL(fileURLWithPath: self).appendingPathComponent(string).path
}
用法:
let writePath = NSTemporaryDirectory().appendingPathComponent(directoryname)
Swift 3解决方案:
下面是一个获取文档目录路径的函数-
func getDocumentsDirectory() -> URL {
let paths = FileManager.default.urls(for: .documentDirectory, in:.userDomainMask)
let documentsDirectory = paths[0]
return documentsDirectory
}
使用方法:
getDocumentsDirectory.appendingPathComponent("google.com")
结果:
file:///var/folders/w1/3rcp2fvs1qv43hfsh5876s0h0000gn/T/com.apple.dt.Xcode.pg/containers/com.apple.dt.playground.stub.iOS_Simulator.MyPlayground-7CF9F706-509C-4D4C-997E-AB8FE9E4A6EA/Documents/google.com
Swift 4
extension String {
var lastPathComponent: String {
return (self as NSString).lastPathComponent
var pathExtension: String {
return (self as NSString).pathExtension
var stringByDeletingLastPathComponent: String {
return (self as NSString).deletingLastPathComponent
var stringByDeletingPathExtension: String {
return (self as NSString).deletingPathExtension
var pathComponents: [String] {
return (self as NSString).pathComponents
func stringByAppendingPathComponent(path: String) -> String {
let nsSt = self as NSString
return nsSt.appendingPathComponent(path)
func stringByAppendingPathExtension(ext: String) -> String? {
let nsSt = self as NSString
return nsSt.appendingPathExtension(ext)