Swift2从Firebase检索图像
发布时间:2020-12-14 04:50:17 所属栏目:百科 来源:网络整理
导读:我正在尝试从Firebase中读取/显示图像.我首先编码图像,然后将此编码的字符串发布到Firebase.这很好.当我尝试从Firebase解码编码的字符串并将其转换为图像时,我得到一个零值异常. 这就是我将图像保存到Firebase的方式 var base64String: NSString!func imageP
我正在尝试从Firebase中读取/显示图像.我首先编码图像,然后将此编码的字符串发布到Firebase.这很好.当我尝试从Firebase解码编码的字符串并将其转换为图像时,我得到一个零值异常.
这就是我将图像保存到Firebase的方式 var base64String: NSString! func imagePickerController(picker: UIImagePickerController,didFinishPickingImage image: UIImage,editingInfo: [String : AnyObject]?) { self.dismissViewControllerAnimated(true,completion: nil) imageToPost.image = image var uploadImage = image as! UIImage var imageData = UIImagePNGRepresentation(uploadImage)! self.base64String = imageData.base64EncodedStringWithOptions(NSDataBase64EncodingOptions.Encoding64CharacterLineLength) let ref = Firebase(url: "https://XXX.firebaseio.com") var quoteString = ["string": self.base64String] var usersRef = ref.childByAppendingPath("goalImages") var users = ["image": quoteString] usersRef.setValue(users) displayAlert("Image Posted",message: "Your image has been successfully posted!") } 这就是我尝试从Firebase读取图像的方法 // ViewController.swift import UIKit import Firebase class ViewController: UIViewController { @IBOutlet weak var image: UIImageView! var base64String: NSString! @IBAction func buttonClicked(sender: AnyObject) { sender.setTitle("(sender.tag)",forState: UIControlState.Normal) } override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view,typically from a nib. let ref = Firebase(url: "https://XXX.firebaseio.com/goalImages/image/string") ref.observeEventType(.Value,withBlock: { snapshot in self.base64String = snapshot.value as! NSString let decodedData = NSData(base64EncodedString: self.base64String as String,options: NSDataBase64DecodingOptions()) //Next line is giving the error var decodedImage = UIImage(data: decodedData!) self.image.image = decodedImage },withCancelBlock: { error in print(error.description) }) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } } 错误说:“致命错误:在展开Optional值时意外发现nil”; decodingData是零.有人可以解释出了什么问题. 解决方法
代替
let decodedData = NSData(base64EncodedString: self.base64String as String,options: NSDataBase64DecodingOptions()) 尝试添加IgnoreUnknownCharacters NSDataBase64DecodingOptions.IgnoreUnknownCharacters 使用示例:编码jpg,存储和读取firebase 编码并编写我们最喜欢的星舰 if let image = NSImage(named:"Enterprise.jpeg") { let imageData = image.TIFFRepresentation let base64String = imageData!.base64EncodedStringWithOptions(.Encoding64CharacterLineLength) let imageRef = myRootRef.childByAppendingPath("image_path") imageRef.setValue(base64String) 读取和解码 imageRef.observeEventType(.Value,withBlock: { snapshot in let base64EncodedString = snapshot.value let imageData = NSData(base64EncodedString: base64EncodedString as! String,options: NSDataBase64DecodingOptions.IgnoreUnknownCharacters) let decodedImage = NSImage(data:imageData!) self.myImageView.image = decodedImage },withCancelBlock: { error in print(error.description) }) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |