当我按下按钮时,如果我想提醒用户图像的特殊性,我该怎么做?如果图像有特定的名称,我不想将数据保存到Firebase



如果图像名为"x〃;在我的资产中定义为我的imageView,我想在点击上传按钮时提醒屏幕,但如果有一张名为";x〃;在imageView中。它仍然将数据保存到Firebase数据库。请帮帮我。

@IBAction func uploadButtonClicked(_ sender: Any) {
if  self.imageView.image == UIImage(named: "x") && self.commentText.text! == "" {
self.makeAlert(tittleInput: "Error", messageInput: "Please choose photo!")
}else {

let storage = Storage.storage()
let storageReference = storage.reference()

let mediaFolder = storageReference.child("media")

if let data = imageView.image?.jpegData(compressionQuality: 0.5) {

let uuid = UUID().uuidString

let imageReference = mediaFolder.child("(uuid).jpg")
imageReference.putData(data, metadata: nil) { storageMetaData, error in
if error != nil {
self.makeAlert(tittleInput: "Error", messageInput: error?.localizedDescription ?? "Error")
} else {
imageReference.downloadURL { url, error in
if error == nil {
let imageURL = url?.absoluteString

let fireStoreDatabase = Firestore.firestore()

var fireStoreReference : DocumentReference? = nil

let fireStorePost = ["imageUrl" : imageURL!, "postedBy": Auth.auth().currentUser?.email! , "postComment": self.commentText.text!,"date": FieldValue.serverTimestamp(), "like": 0] as [String: Any]

fireStoreReference = fireStoreDatabase.collection("Posts").addDocument(data: fireStorePost, completion: { error in
if error != nil {
self.makeAlert(tittleInput: "Error", messageInput: error?.localizedDescription ?? "Error")

} else {

self.imageView.image = UIImage(named: "x")
self.commentText.text = ""
self.tabBarController?.selectedIndex = 0
}

})

}
}
}
}
}     
}

您的if语句看起来不正确:

if self.imageView.image == UIImage(named: "x") && self.commentText.text! == "" {

上面写着:

  • 如果
    • imageView的图像等于UIImage(命名为:"x"(
    • commentText字段(或标签?(等于"(空字符串(

我想你想要这个:

if self.imageView.image == UIImage(named: "x") || self.commentText.text! == "" {

上面写着:

  • 如果
    • imageView的图像等于UIImage(命名为:"x"(
    • commentText字段(或标签?(等于"(空字符串(

在您的版本中,您创建了UIImage的一个新实例,并对两个不相等的对象进行比较,因为它们位于不同的内存区域。要比较图片名称,您需要获得一个url,这取决于您如何获得图像,您可以从中提取文件名。

如果您使用UIImagePickerController来检索图像,那么委托方法的实现将看起来像:

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) 
{
let url = info[.imageURL] as? URL
if let name = url?.lastPathComponent {
print("Name: (name)")
}

}

相关内容

最新更新