如何将 NSURL 转换为字符串

How to convert NSURL to String

我有一个 CameraVC class 以 :

开头
class CameraVC: UITableViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {

var imagePicker = UIImagePickerController()
var image = UIImage()
var videoFilePath = NSURL()

...

我有这个功能:

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {

    let mediaType:String = info[UIImagePickerControllerMediaType] as! String

    print(mediaType)

    if mediaType == "public.image" {
        self.image = info[UIImagePickerControllerOriginalImage] as! UIImage

        if self.imagePicker.sourceType == UIImagePickerControllerSourceType.Camera {
            UIImageWriteToSavedPhotosAlbum(self.image, nil, nil, nil)
        }

        self.dismissViewControllerAnimated(true, completion: nil)

    } else if mediaType == "public.movie" {
        self.videoFilePath = info[UIImagePickerControllerMediaURL] as! NSURL
        print(self.videoFilePath)

        // THIS LINE IS NOT WORK ->
        let url = NSURL(string: self.videoFilePath)

        /*if self.imagePicker.sourceType == UIImagePickerControllerSourceType.Camera {
            if UIVideoAtPathIsCompatibleWithSavedPhotosAlbum(self.videoFilePath) {
                UISaveVideoAtPathToSavedPhotosAlbum(self.videoFilePath, nil, nil, nil)
            }
        }*/
    } 
}

行:

    let url = NSURL(string: self.videoFilePath)

不工作,我有一个红色警报“无法将类型 NSURL 的值转换为预期的参数类型字符串。

行:

print(self.videoFilePath)

写入控制台日志:

file:///private/var/mobile/Containers/Data/Application/071BCA9C-D246-4D14-9D56-34057A17079B/tmp/capture-T0x156501280.tmp.y4Ve7u/capturedvideo.MOV

尝试查看此处的文档:https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSURL_Class/#//apple_ref/occ/instp/NSURL/absoluteString

尝试let url = NSURL(string: self.videoFilePath.absoluteString)

你也意识到 self.videoFilePath 已经是一个 NSURL...

您的变量命名不当。 self.videoFilePath 不是路径,而是 url。您在这里将其设置为 URL: self.videoFilePath = info[UIImagePickerControllerMediaURL] as! NSURL

如果您已经将 self.videoFilePath 转换为 NSURL,则不必将其转换为 String 然后再转换为 NSURL

为了让代码更安全:

if let path = info[UIImagePickerControllerMediaURL] as? NSURL {
    self.videoFilePath = path
    let url = path
    //Continue whatever you want
}