我正在尝试从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())
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) })
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。