Swift: проверьте, не изменился ли URL изображения - PullRequest
0 голосов
/ 04 июля 2019

У меня есть представление, которое показывает выбранный объект (продукт) из коллекции collectionView и дает пользователю возможность вносить изменения в этот продукт. Прежде чем вернуться к collectionViewController, я хочу проверить, были ли внесены какие-либо изменения, и спросить пользователя, хотят ли они сохранить или нет.

Продукт содержит url? .AbsoluteString для imageView. Я делаю сравнение с Equatable,

if product1 != product2 { 
   ask if save or not 
}

Самая большая проблема заключается в том, что когда я создаю absolutString, изображение загружается в Firebase, и это занимает ненужное время. И если я не хочу сохранять изменения, будет слишком поздно, потому что я уже изменил изображение в firebase.

// getting the url String

func uploadImage(_ image: UIImage, completion: @escaping (_ url: URL?) -> ()) {
        let storageRef = Storage.storage().reference().child("myImage.jpeg")
        let imageData = imageHolder.imageView.image?.jpegData(compressionQuality: 0.5)
        let metaData = StorageMetadata()
        metaData.contentType = "image/jpeg"
        storageRef.putData(imageData!, metadata: metaData) { (metadata, error) in
            if error == nil {
                print("success")
                storageRef.downloadURL(completion: { (url, error) in
                    completion(url!)
                })
            } else {
                print("error in save image")
                completion(nil)
            }
        }
    }


// comparing the two objects

func checkEditedProduct() -> Bool {

        var productsAreSame = true

        uploadImage(imageHolder.imageView.image!) { (url) in
            let product = Product(name: self.productName.text.text!,
                                  barCode: self.productGANText.text!,
                                  sellPrice: Int(self.productPrice.text.text!) ?? 0,
                                  buyPrice: Int(self.productWorth.text.text!) ?? 0,
                                  picture: url?.absoluteString,
                                  numberOfItemsInStock: Int(self.productInStock.text.text!) ?? 0,
                                  stockKeepingUnit: self.productSKU.text.text)
            self.compareProduct.append(product)
        }

        if compareProduct.count == 2 {
            if compareProduct[0] != compareProduct[1] {
                productsAreSame = false
            }
        }

        return productsAreSame
    }

Я не хочу знать, есть ли способ проверить, было ли подделано изображение в imageView или нет, без необходимости делать какие-либо вызовы базы данных или хранилища firebase

...