首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >stringByAppendingPathComponent不可用

stringByAppendingPathComponent不可用
EN

Stack Overflow用户
提问于 2015-09-10 20:16:11
回答 11查看 71.6K关注 0票数 134

我的应用程序在Instagram上分享照片,为了做到这一点,它首先将其保存在一个临时目录中:

代码语言:javascript
运行
复制
let writePath = NSTemporaryDirectory().stringByAppendingPathComponent("instagram.igo")

它可以在Swift 1.2上工作,但不能在Swift 2.0上工作。

给定的错误消息为:

stringByAppendingPathComponent不可用:请改用NSURL上的URLByAppendingPathComponent。

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2015-09-10 20:30:39

看起来stringByAppendingPathComponent方法在Swift 2.0中被删除了,所以错误消息建议使用:

代码语言:javascript
运行
复制
let writePath = NSURL(fileURLWithPath: NSTemporaryDirectory()).URLByAppendingPathComponent("instagram.igo")

更新:

URLByAppendingPathComponent()已被appendingPathComponent()取代,因此请执行以下操作:

代码语言:javascript
运行
复制
let writePath = NSURL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent("instagram.igo")
票数 146
EN

Stack Overflow用户

发布于 2015-09-10 20:24:52

它适用于NSString,所以你可以这样使用它:

代码语言:javascript
运行
复制
extension String {
    func stringByAppendingPathComponent(path: String) -> String {
        let nsSt = self as NSString
        return nsSt.stringByAppendingPathComponent(path)
    }
}

现在您可以使用此扩展,它将首先将您的String转换为NSString,然后执行操作。

你的代码将是:

代码语言:javascript
运行
复制
let writePath = NSTemporaryDirectory().stringByAppendingPathComponent("instagram.igo")

下面是一些其他的使用方法:

代码语言:javascript
运行
复制
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:

代码语言:javascript
运行
复制
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)
    }
}
票数 75
EN

Stack Overflow用户

发布于 2015-09-21 10:01:57

只需将字符串包装为NSString即可。

代码语言:javascript
运行
复制
let writePath = (NSTemporaryDirectory() as NSString).stringByAppendingPathComponent("instagram.igo")
票数 30
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32501627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档