【问题标题】:Error : Value of type 'String' has no member 'URLByAppendingPathComponent'错误:“字符串”类型的值没有成员“URLByAppendingPathComponent”
【发布时间】:2017-11-30 13:21:45
【问题描述】:

我的错误是: “String”类型的值没有成员“URLByAppendingPathComponent”

我在这行有错误:

 let savePath = documentDirectory.URLByAppendingPathComponent("mergeVideo-\(date).mov")

我的完整代码:

  // 4 - Get path
  let documentDirectory = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] 
  var dateFormatter = NSDateFormatter()
  dateFormatter.dateStyle = .LongStyle
  dateFormatter.timeStyle = .ShortStyle
  let date = dateFormatter.stringFromDate(NSDate())
  let savePath = documentDirectory.URLByAppendingPathComponent("mergeVideo-\(date).mov")

    let url = NSURL(fileURLWithPath: savePath)

我遵循了这个教程:Here

【问题讨论】:

    标签: ios swift


    【解决方案1】:

    这是

    let savePath = (documentDirectory as NSString).stringByAppendingPathComponent("mergeVideo-\(date).mov")
    

    因为documentDirectoryString 而不是NSURL

    编辑

    我推荐使用这个 API:

    let documentDirectory = try! NSFileManager.defaultManager().URLForDirectory(.DocumentDirectory, inDomain: .UserDomainMask, appropriateForURL: nil, create: false)
    var dateFormatter = NSDateFormatter()
    dateFormatter.dateStyle = .LongStyle
    dateFormatter.timeStyle = .ShortStyle
    let date = dateFormatter.stringFromDate(NSDate())
    let saveURL = documentDirectory.URLByAppendingPathComponent("mergeVideo-\(date).mov") // now it's NSURL
    

    斯威夫特 3+

    let documentDirectory = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false)
    var dateFormatter = DateFormatter()
    dateFormatter.dateStyle = .long
    dateFormatter.timeStyle = .short
    let date = dateFormatter.string(from: Date())
    let saveURL = documentDirectory.appendingPathComponent("mergeVideo-\(date).mov")
    

    【讨论】:

    • 是的,更改该行后出现错误:'stringByAppendingPathComponent' is unavailable: Use URLByAppendingPathComponent on NSURL instead.
    • 我更新了解决问题的答案。无论如何,最好还是使用与 URL 相关的 API(使用 NSFileManager 获取 URL)。
    【解决方案2】:

    如错误所述,String 类没有可用的URLByAppendingPathComponent 方法,该函数属于NSURL

    你需要使用:

    let savePath = (documentDirectory as NSString).stringByAppendingPathComponent("mergeVideo-\(date).mov")
    

    或者你可以这样做:

    let url      = NSURL(fileURLWithPath: documentDirectory)
    let savePath = url.URLByAppendingPathComponent("mergeVideo-\(date).mov")
    

    【讨论】:

    • 感谢您的重播解决方案
    • @user5513630:这是由于 swift 2.0,我正在用另一种选择更新我的答案。
    【解决方案3】:

    Swift 3:URL 附加路径组件

        let documentDirectory = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false)
            let completeMovie = documentDirectory.appendingPathComponent("movie.mov") // now it's NSURL
    

    Swift 3 路径

      let fm = FileManager.default
    
            let docsurl = try! fm.url(for:.documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false)
            let completeMovie = String(describing: docsurl.appendingPathComponent("merge.mp4"))
    

    【讨论】:

      猜你喜欢
      • 2016-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-14
      • 1970-01-01
      相关资源
      最近更新 更多