NSError * domain: @“com.google.HTTPStatus” - code:

2020-02-15 05:02发布

I am trying to read images from Firebase storage, and I am getting this error:

NSError * domain: @"com.google.HTTPStatus" - code: 404

In function:

- (void)invokeFetchCallbacksOnCallbackQueueWithData:(GTM_NULLABLE NSData *)data
                                              error:(GTM_NULLABLE NSError *)error {
  // Callbacks will be released in the method stopFetchReleasingCallbacks:
  GTMSessionFetcherCompletionHandler handler;
  @synchronized(self) {
    GTMSessionMonitorSynchronized(self);

    handler = _completionHandler;

    if (handler) {
      [self invokeOnCallbackQueueUnlessStopped:^{
        handler(data, error);

        // Post a notification, primarily to allow code to collect responses for
        // testing.
        //
        // The observing code is not likely on the fetcher's callback
        // queue, so this posts explicitly to the main queue.
        NSMutableDictionary *userInfo = [NSMutableDictionary dictionary];
        if (data) {
          userInfo[kGTMSessionFetcherCompletionDataKey] = data;
        }
        if (error) {
          userInfo[kGTMSessionFetcherCompletionErrorKey] = error;
        }
        [self postNotificationOnMainThreadWithName:kGTMSessionFetcherCompletionInvokedNotification
                                          userInfo:userInfo
                                      requireAsync:NO];
      }];
    }
  }  // @synchronized(self)

This is my code for reading from Firebase Storage:

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "product_collection_cell", for: indexPath) as! ProductsCollectionViewCell

let prodInCell = searchActive ? filtered[indexPath.row] : products[indexPath.row]

// Set fields
cell.ProductImageView.image = #imageLiteral(resourceName: "DefaultProductImage")
prodInCell.GetProductImage() { image in
    cell.ProductImageView.image = image
}
cell.ProductName.text = prodInCell.Name()
cell.ProductPrice.text = String(prodInCell.Price())
cell.productUniqueID = prodInCell.UniqueID()
return cell

}

public func GetProductImage(completion: ((UIImage?) -> Void)) {

let prodID = self.UniqueID()
let dbRef = Storage.storage().reference().child(prodID).child("pic0.jpg")

let imgTask = dbRef.getData(maxSize: 10*1024*1024, completion: { (data, error) in

    if let data = data, let img = UIImage(data: data) {
        completion(img)
    } else {
        completion(nil)
    }
})

imgTask.observe(.progress, handler: {(snapshot) in
    print (snapshot.progress ?? "NO MORE PROGRESS")
})
imgTask.resume()

}

And I get exception: Thread 1: EXC_BAD_ACCESS (code=1, address=0x10)

What is the problem and how can I resolve this ?

Not all my products have images, and if one does not I want to display "DefaultProductImage".

This is an example of one of my products' images stored:

Images for product example

0条回答
登录 后发表回答