gpt4 book ai didi

IOS - 限制用户最多选择 8 个图像并使用 For 循环将多个图像上传到 Firebase

转载 作者:行者123 更新时间:2023-11-30 11:40:42 27 4
gpt4 key购买 nike

我是 IOS 新手。我正在使用 Xcode 和 Swift 构建一个图像共享应用程序

我陷入了图像上传部分。

如何限制用户最多选择 8 张图片,然后使用 For 循环将所选图片上传到 Firebase?

我想使用For循环,因为我想将第一张图片设置为图标图片。

以下是我现在能做的事情

我创建了一个注册页面,并允许用户使用 ImagePicker 选择 1 个图像并将其上传到 Firebase。下面是我的代码。

import UIKit
import Firebase

class SignUpViewController: UIViewController,UIImagePickerControllerDelegate,UINavigationControllerDelegate
{

@IBOutlet weak var iconfield: UIImageView!

@IBOutlet weak var usernamefield: UITextField!

@IBOutlet weak var emailfield: UITextField!

@IBOutlet weak var passwordfield: UITextField!

@IBOutlet weak var confirmpasswordfield: UITextField!

@IBOutlet weak var signupbutton: UIButton!

let picker = UIImagePickerController()
var userStorage: StorageReference!
var ref: DatabaseReference!

override func viewDidLoad()
{
super.viewDidLoad()

picker.delegate = self
let storage = Storage.storage().reference(forURL: "gs://whatisit-8484a.appspot.com/")
ref = Database.database().reference()
userStorage = storage.child("users")
// Do any additional setup after loading the view.
iconfield.layer.cornerRadius=iconfield.frame.size.width/2
iconfield.clipsToBounds = true
}

@IBAction func selectionpressed(_ sender: Any)
{
picker.allowsEditing = true
picker.sourceType = .photoLibrary
present(picker,animated:true,completion:nil)
}

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any])
{
if let image = info[UIImagePickerControllerEditedImage] as? UIImage
{
self.iconfield.image = image
signupbutton.isHidden = false
}
self.dismiss(animated:true,completion:nil)
}

@IBAction func confirmsignup(_ sender: Any)
{
guard usernamefield.text != "",emailfield.text != "",passwordfield.text != "", confirmpasswordfield.text != "" else {return}

if passwordfield.text == confirmpasswordfield.text
{
Auth.auth().createUser(withEmail: emailfield.text!, password: passwordfield.text!, completion: { (user, error) in
if let error = error
{
print(error.localizedDescription)
}

if let user = user
{
let changeRequest = Auth.auth().currentUser!.createProfileChangeRequest()
changeRequest.displayName = self.usernamefield.text!
changeRequest.commitChanges(completion: nil)

let imageRef = self.userStorage.child("\(user.uid).jpg")
let data = UIImageJPEGRepresentation(self.iconfield.image!, 0.5)

let uploadTask = imageRef.putData(data!, metadata: nil, completion: { (metadata, err) in
if err != nil{
print(err!.localizedDescription)
}
imageRef.downloadURL(completion: { (url, er) in
if er != nil{
print(er!.localizedDescription)
}

if let url = url
{
let userInfo: [String: Any] = ["uid": user.uid,"E-mail":self.emailfield.text,"username": self.usernamefield.text,"urlToImage": url.absoluteString]
self.ref.child("users").child(user.uid).setValue(userInfo)
let vc = UIStoryboard(name: "Main",bundle:nil).instantiateViewController(withIdentifier: "homeview")
self.present(vc,animated:true,completion:nil)
}
})
})
uploadTask.resume()
}
})
}

最佳答案

您的问题非常广泛,实际上涵盖了几个不同的问题。实际上,您应该分解问题并只为每个问题发布一个问题,但我会给您一些指导。

  • How to select multiple images using a UIImagePickerController - 基本上你不能,你要么需要使用库,要么使用 PhotoLibrary 自己实现
  • How to upload an image to Firebase应该相当简单。
  • 多次上传可能会稍微复杂一些。您可以使用 NSOperationQueue 来管理要处理的项目队列并指定一次要处理的项目数,您可以使用 SerialQueue 一次处理一个项目,或者使用 DispatchQueue 一次触发所有请求,它会让您知道什么时候结束。一旦达到这一点,首先尝试一下,研究一下提到的方法。如果您遇到困难,请提出另一个问题并解释您的方法、您希望它如何工作以及出了什么问题。

This other answer可能有助于多次上传,如果没有,请在线查找 Grand Central Dispatch 或查看 here

关于IOS - 限制用户最多选择 8 个图像并使用 For 循环将多个图像上传到 Firebase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49321441/

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