Swift2从Firebase中检索图片 [英] Swift2 retrieving images from 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,信息:Your image has been posted posted!)
}
这就是我想要从Firebase读取图片的方式
// ViewController.swift
导入UIKit
导入Firebase
类ViewController:UIViewController {
@IBOutlet弱var image:UIImageView!
var base64String:NSString!
@IBAction func buttonClicked(sender:AnyObject){
sender.setTitle(\(sender.tag),forState:UIControlState.Normal)
$ b重写func viewDidLoad(){
super.viewDidLoad()
//在加载视图之后,通常从一个笔尖执行任何额外的设置。
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())
//下一行是错误
var decodeImage = UIImage(data:decodedData!)
self.image.image = decodedImage
},withCancelBlock:{error in
print(error.description)
})
}
覆盖func didReceiveMemoryWarning(){
super.didReceiveMemoryWarning()
//处置任何可以重新创建的资源。
错误提示:致命错误:意外发现无同时展开一个可选值; decodeData是零。有人可以解释什么是错的。
解决方案 let decodedData = NSData(base64EncodedString:self.base64String as String,
options:NSDataBase64DecodingOptions())
尝试添加IgnoreUnknownCharacters
NSDataBase64DecodingOptions.IgnoreUnknownCharacters
使用示例:编码一个jpg,存储并从firebase读取
编码并编写我们最喜欢的星舰
$ p $ 如果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(.V alue,withBlock:{快照
让base64EncodedString = snapshot.value
让imageData = NSData(base64EncodedString:base64EncodedString as!字符串,
选项:NSDataBase64DecodingOptions.IgnoreUnknownCharacters)
让decodeImage = NSImage(data:imageData!)
self.myImageView.image = decodedImage
},withCancelBlock:{错误
print(error.description)
})
I am trying to read/display an image from Firebase. I am first encoding the image and then posting this encoded String to Firebase. This runs fine. When I try and decode the encoded string from Firebase and convert it to an image, I am getting a nil value exception.
This is how I am saving the image to 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!")
}
This is how I am trying to read the image from 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.
}
}
The error says: "fatal error: unexpectedly found nil while unwrapping an Optional value"; decodedData is nil. Could someone explain what is going wrong.
解决方案 Instead of
let decodedData = NSData(base64EncodedString: self.base64String as String,
options: NSDataBase64DecodingOptions())
try adding IgnoreUnknownCharacters
NSDataBase64DecodingOptions.IgnoreUnknownCharacters
Use Example: Encode a jpg, store and read from firebase
encode and write our favorite star ship
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)
read and decode
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)
})
这篇关于Swift2从Firebase中检索图片的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文