Saving array of objects containing ParseFiles

I have a PFPhoto object which contains 2 ParseFiles:

struct PFPhoto: ParseObject {
    //: These are required by ParseObject
    var objectId: String?
    var createdAt: Date?
    var updatedAt: Date?
    var ACL: ParseACL?
    var originalData: Data?

    //: Your own properties.
    var photo: ParseFile?
    var thumbnail: ParseFile?
    var location: ParseGeoPoint?
}

If I create and save this object, everything works fine:

 let photoFile = ParseFile(name:"photo.jpg", data: photoData as Data)
 let thumbnailFile = ParseFile(name:"thumbnail.jpg", data: thumbnailImageData)
                
 var pfPhoto = PFPhoto()
 var photoACL = ParseACL()
 photoACL.publicRead = true
 photoACL.publicWrite = false
 photoACL.setWriteAccess(user: User.current!, value: true)
                
 pfPhoto.ACL = photoACL
 pfPhoto.photo = photoFile
 pfPhoto.thumbnail = thumbnailFile
 pfPhoto.save() { result in
       print("photo saved")
        }

I have a PFTour object which links to an array of PFPhoto’s:

struct PFTour: ParseObject {
    
    //: These are required by ParseObject
    var objectId: String?
    var createdAt: Date?
    var updatedAt: Date?
    var ACL: ParseACL?
    var originalData: Data?

    //: Your own properties.
    var name: String?
    var photos: [PFPhoto]?
}

When I add the PFPhotos to the tour and save the PFTour, the objects are all created but the ParseFile data is invalid- https://parsefiles.back4app.com/zgqRRfY6Tr5ICfdPocRLZG8EXK59vfS5dpDM5bqr/thumbnail.jpg

  var pfTour = PFTour()
  var tourACL = ParseACL() 
  tourACL.publicRead = true
  tourACL.publicWrite = false
  tourACL.setWriteAccess(user: User.current!, value: true)
  pfTour.ACL = tourACL
  let photos = self.fetchPhotos(fromTour: tourID, to: pfTour, in: backgroundContext)
  pfTour.photos = photos

Is what I’m doing allowed or is there a better way to go about it?