尝试使用 Photos Framework [Swift 2.0] 从 imagepickercontroller 检索 NSURL

Posted

技术标签:

【中文标题】尝试使用 Photos Framework [Swift 2.0] 从 imagepickercontroller 检索 NSURL【英文标题】:Trying to retrieve NSURL from imagepickercontroller with Photos Framework [Swift 2.0] 【发布时间】:2016-06-06 20:43:01 【问题描述】:

当用户使用照片框架通过图像选择器控制器选择图像或视频时,我试图从图像或视频中获取 NSURL

import Photos

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

    let url: NSURL = (info["UIImagePickerControllerReferenceURL"] as! NSURL)
    mediaUploadView.image = info[UIImagePickerControllerOriginalImage]as? UIImage

    print(url)
    self.dismissViewControllerAnimated(true, completion: nil)
    return UIImagePickerControllerReferenceURL

我收到错误“在 void 函数中出现意外的非 void 返回值”。

最终目标是使用 NSURL 将图像/视频/gif 上传到 Firebase 数据库。

老实说,我不确定我的逻辑是否正确,我还是编码新手。非常感谢任何帮助!

【问题讨论】:

【参考方案1】:

在swift中,你必须在函数末尾的开头“”之前说返回值是什么,如果你不这样做,那么它被认为是一个void函数。 void 函数意味着它不返回任何值。所以,告诉它它会返回一个 NSURL,试试这个:

import Photos

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) -> NSURL 

let url: NSURL = (info[UIImagePickerControllerReferenceURL] as! NSURL)
mediaUploadView.image = info[UIImagePickerControllerOriginalImage]as? UIImage

print(url)
self.dismissViewControllerAnimated(true, completion: nil)
return url

只需复制并粘贴这个,唯一的区别是它告诉函数返回值是什么,并且不再返回那个错误。我还建议删除周围的“”

(info[UIImagePickerControllerReferenceURL] as! NSURL)

这将返回一个 NSURL。

【讨论】:

以上是关于尝试使用 Photos Framework [Swift 2.0] 从 imagepickercontroller 检索 NSURL的主要内容,如果未能解决你的问题,请参考以下文章

text PHPhotoLibrary + SaveImage - 使用Photos Framework swift 3保存图像

分分钟教你学习一个新的框架--Photos FrameWork

使用 Swift (iOS) 和 Photos 框架保存自定义图像的元数据

iOS APP删除系统相册中选中的图片-姬云鹏

无法使用附件 gem 上传种子数据“对象的未定义方法 `photos_urls='”

如何使用 Photos 框架从 iOS 上的相机胶卷中获取最新照片?