如何将 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
尝试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
}
我有一个 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
尝试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
}