title: Why don't the photos appear during the initial launch of the app?
body: <p>I have implemented a <code>viewController</code> which contains a <code>collectionView</code> that holds photos from the users photo album saved on their phone. On the very first launch of the app after the app asks for the users permission to access their photos the photos don't show in the <code>collectionView</code>. But after quitting the app and relaunching the photos display as they should.</p>
  
  <p>Below is the code of the <code>viewController</code> in question</p>
  
  <pre><code>import UIKit
  import Photos
  
  class ViewController: UIViewController,UICollectionViewDelegate,UICollectionViewDelegateFlowLayout,UICollectionViewDataSource {
  
      var imageArray:[UIImage] = [UIImage]()
  
      var collectionView:UICollectionView! = {
          let layout = UICollectionViewFlowLayout()
          layout.minimumInteritemSpacing = 1
          layout.minimumLineSpacing = 1
          layout.scrollDirection = .vertical
          let CV = UICollectionView(frame: UIScreen.main.bounds, collectionViewLayout: layout)
          CV.translatesAutoresizingMaskIntoConstraints = false
          return CV
      }()
  
      var fetchResult: PHFetchResult&lt;PHAsset&gt; = PHFetchResult()
  
      override func viewDidLoad() {
          super.viewDidLoad()
          self.collectionView.delegate = self
          self.collectionView.dataSource = self
          collectionView.register(customPhotoCell.self, forCellWithReuseIdentifier: "Cell")
          self.view.addSubview(collectionView)
          setUpLayout()
          fetchAssets()
      }
  
      func setUpLayout(){
          collectionView.topAnchor.constraint(equalTo: self.view.topAnchor, constant: 50).isActive = true
          collectionView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor, constant: 0).isActive = true
          collectionView.trailingAnchor.constraint(equalTo: self.view.trailingAnchor, constant: 0).isActive = true
          collectionView.leadingAnchor.constraint(equalTo: self.view.leadingAnchor, constant: 0).isActive = true
      }
  
      func fetchAssets(){
          let fetchOptions = PHFetchOptions()
          fetchOptions.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: false)]
          fetchResult = PHAsset.fetchAssets(with: .image, options: fetchOptions)
      }
  
      func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -&gt; Int {
          return fetchResult.count
      }
  
      func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -&gt; UICollectionViewCell {
          let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) as! customPhotoCell
          let imageView = cell.imgView
          let requestOptions = PHImageRequestOptions()
          requestOptions.isSynchronous = true
          requestOptions.deliveryMode = .highQualityFormat
          PHImageManager.default().requestImage(for: fetchResult.object(at: indexPath.item) , targetSize: CGSize(width: 200,height: 200), contentMode: .aspectFill, options: requestOptions, resultHandler: {
              image,error in
              if let error = error{
                  print(error)
              }
              self.imageArray.append(image!)
              imageView.image = image!
          })
          return cell
      }
  
      func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -&gt; CGFloat {
          return 1
      }
  
      func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -&gt; CGFloat {
          return 1
      }
  
      func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -&gt; CGSize {
          let width = self.view.bounds.width/3 - 1
          return CGSize(width: width, height: width)
      }
  
  }
  
  class customPhotoCell:UICollectionViewCell{
  
      var imgView:UIImageView = {
          let imgV = UIImageView()
          imgV.backgroundColor = .orange
          imgV.translatesAutoresizingMaskIntoConstraints = false
          return imgV
      }()
  
      override init(frame: CGRect) {
          super.init(frame: frame)
          self.addSubview(imgView)
          imgView.topAnchor.constraint(equalTo: self.topAnchor, constant: 0).isActive = true
          imgView.bottomAnchor.constraint(equalTo: self.bottomAnchor, constant: 0).isActive = true
          imgView.leadingAnchor.constraint(equalTo: self.leadingAnchor, constant: 0).isActive = true
          imgView.trailingAnchor.constraint(equalTo: self.trailingAnchor, constant: 0).isActive = true
      }
      required init?(coder aDecoder: NSCoder) {
          fatalError("init(coder:) has not been implemented")
      }
  
  }
  
  extension UIImageView{
      func fetchImage(asset: PHAsset, contentMode: PHImageContentMode, targetSize: CGSize) {
          let options = PHImageRequestOptions()
          options.version = .original
          PHImageManager.default().requestImage(for: asset, targetSize: targetSize, contentMode: contentMode, options: options) { image, _ in
              guard let image = image else { return }
              switch contentMode {
              case .aspectFill:
                  self.contentMode = .scaleAspectFill
              case .aspectFit:
                  self.contentMode = .scaleAspectFit
              }
              self.image = image
          }
      }
  }
  
  extension UIImage{
      func resizeImageWith() -&gt; UIImage {
          let aspectRatio = CGFloat(self.size.width / self.size.height)
          let newWidth = UIScreen.main.bounds.width
          let newSize = CGSize(width: newWidth, height: newWidth/aspectRatio)
          UIGraphicsBeginImageContextWithOptions(newSize, true, 0)
          self.draw(in: CGRect(origin: CGPoint(x: 0, y: 0), size: newSize))
          let  newImage = UIGraphicsGetImageFromCurrentImageContext()
          UIGraphicsEndImageContext()
          return newImage!
      }
  }
  </code></pre>