gpt4 book ai didi

arrays - 如何使用 iOS Swift 将一组图像存储在 Firebase Storage 中的 1 个路径下

转载 作者:行者123 更新时间:2023-11-30 13:07:56 25 4
gpt4 key购买 nike

我有 2 个 View :ViewOne 和 ViewTwo。

ViewOne 内部有 4 个 imageView 导出和一个 postButton。用户按下 postButton 后,所有图像都将发送到 Firebase Storage,然后从那里检索它们并在 ViewTwo 中显示。

在 ViewTwo 内部还有 4 个 ImageView 导出,用于接收从 ViewOne 发布到 Firebase Storage 的图像。

使用 Firebase 存储,我无论如何都看不到将多个图像存储在同一路径下的存储中。我了解如何将每个帖子存储 1 个图像到存储然后访问它,但不是多个图像。

如何将多个图像作为数组发布到存储中以保存在 1 个路径(ViewOne)下?然后我如何访问所有这些图像(ViewTwo)?

顺便说一句,我通过 Youtube 从 Brian Voong 那里得到了很棒的 viewTwo 代码(自定义函数):https://youtu.be/b1vrjt7Nvb0

这是图像 url 字符串将进入的类。我没有费心去初始化。

class ImageData: NSObject{
var imageOneURL: String?
var imageTwoURL: String?
var imageThreeURL: String?
var imageFourURL: String?
}

这是 imageViewOne。我没有添加 ImagePicker 委托(delegate),因为它看起来没有必要,但我怎么知道如何使用它们。

import Firebase

ImageViewOne:UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate{

@IBOutlet weak var imageViewONE: UIImageView!
@IBOutlet weak var imageViewTWO: UIImageView!
@IBOutlet weak var imageViewTHREE: UIImageView!
@IBOutlet weak var imageViewFOUR: UIImageView!

var images = [ImageData]()

@IBAction func postButton(sender: UIButton){

//Unigue string for the images to be loaded under their own path
let uniqueImageIDPath = NSUUID().UUIDString

//Firebase Storage Ref
let storageRef = FIRStorage.storage().reference().child("images/\(uniqueImageIDPath)")

//Firebase Image to be stored. This is where I need help to store all the images at once.
if let myImages = UIImageJPEGRepresentation(self.imageViewONE.image!, 0.1){
storageRef.putData(myImages, metadata: nil, completion: {

(metadata, error) in

if error != nil{
print(error?.localizedDescription)
}

if let myImageString = metadata?.downloadURL()?.absoluteString{

let imageData = ImageData()
imageData.imageOne = myImageString
self.images.apped(imageData)

let values = ["imageOneURL": imageData.imageOne, "imageTwo":"?", "imageThree":"?", "imageFour":"?"]

let ref = FIRDatabase.database().reference().child("users")
ref.updateChildValues(values, withCompletionBlock: {

(error, user) in

if error != nil{
print(error?.localizedDescription)
}
})
}
}
}

这是viewTwo

import Firebase

ViewTwo: UIViewController{

@IBOutlet weak var imageViewONE: UIImageView!
@IBOutlet weak var imageViewTWO: UIImageView!
@IBOutlet weak var imageViewTHREE: UIImageView!
@IBOutlet weak var imageViewFOUR: UIImageView!

var imageOne: UIImage?
var imageTwo: UIImage?
var imageThree: UIImage?
var imageFour: UIImage?

override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)

let ref = FIRDatabase.database().reference().child("users")

ref.observeEventType(.ChildAdded, withBlock: {
(snapshot) in

if let dict = snapshot.value as? [String: AnyObject]{
let imageURLStr = dict["imageOneURL"] as? String
self.loadImageUsingCacheWithURLString(imageURLStr)
}
}

//Custom Function
func loadImageUsingCacheWithURLString(urlString: String){

let url = NSURL(string: urlString)

NSURLSession.sharedSession().dataTaskWithURL(url!, completionHandler: {

(data, response, error) in

if error != nil {
print(error?.localizedDescription)
return
}

dispatch_async(dispatch_get_main_queue(), {

if let displayImage = UIImage(data: data!){

self.imageOne = displayImage!
self.imageViewOne.image = self.imageOne
}

})

}).resume()
}
}

最佳答案

事实证明,Firebase 不允许您存储任何内容的数组。获得每个图像的元数据 URL 后,您必须将每个图像单独保存在 FBDatabase 和 FBStorage 中。

关于arrays - 如何使用 iOS Swift 将一组图像存储在 Firebase Storage 中的 1 个路径下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39112383/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com