的Xcode 8.3•斯威夫特3.1
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String: Any]) {
let documentsDirectoryURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
if let fileURL = info[UIImagePickerControllerMediaURL] as? URL {
do {
try FileManager.default.moveItem(at: fileURL, to: documentsDirectoryURL.appendingPathComponent("videoName.mov")
print("movie saved")
} catch {
print(error)
}
}
}
斯威夫特2
如果让解开你的自选您应该使用。另外NSData.dataWithContentsOfMappedFile
已被弃用iOS8。尝试使用NSData的方法初始化contentsOfURL:
注意:您也需要从[NSObject : AnyObject]
的didFinishPickingMediaWithInfo声明更改为[String : AnyObject]
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
if let fileURL = info[UIImagePickerControllerMediaURL] as? NSURL {
if let videoData = NSData(contentsOfURL: fileURL) {
print(videoData.length)
}
}
}
由罗布提到的数据可真大,但不是复制文件,应将文件移动到文件夹如下:
let documentsDirectoryURL = try! NSFileManager().URLForDirectory(.DocumentDirectory, inDomain: .UserDomainMask, appropriateForURL: nil, create: true)
if let fileURL = info[UIImagePickerControllerMediaURL] as? NSURL {
do {
try NSFileManagerdefaultManager().moveItemAtURL(fileURL, toURL: documentsDirectoryURL.URLByAppendingPathComponent("videoName").URLByAppendingPathExtension("mov"))
print("movie saved")
} catch {
print(error)
}
}
请说明你的问题。发布的代码中的“info”参数有什么问题? – rmaddy
酷发表的代码在Swift中工作不swift2我问它如何在swift中工作2这是我的函数参数no info in it“func imagePickerController(picker:UIImagePickerController,didFinishPickingImage image:UIImage,editingInfo:[String:AnyObject]?)” – MOMMH
发布的代码在Swift 2中的工作方式不是什么?您的评论中的委托方法已被弃用。在你的问题中使用一个。只需将'info'参数修改为'[String:AnyObject]'。 – rmaddy