After upgrading a Swift 2 project to Swift 3, I struggle with the BFTask
/PFFile
APIs of Parse.
I want to save a number of Parse files in parallel. So far I used BFTask.forCompletionOfAllTasks
which got passed an array of BFTask
s which were generated by PFFile.saveInBackground
. Before migrating to Swift 3, this worked great:
let files: [PFFile] = ...
let tasks: [BFTask] = files.map { $0.saveInBackground() }
BFTask(forCompletionOfAllTasks: tasks)
.continueWithSuccessBlock { ... }
However, with Swift 3 this does not work anymore: BFTask.forCompletionOfAllTasks
now returns a BFTask<NSNumber>
which is not accepted by forCompletionOfAllTasks
which demands an array of <BFTask<AnyObject>
.
Any help on this is appreciated. How can I convert BFTask<NSNumber>
to <BFTask<AnyObject>
-- or is there another way to solve this issue?
Solved by force-casting the image-saving tasks to
BFTask<AnyObject>
:let tasks = files.map { $0.saveInBackground() as! BFTask<AnyObject> }
Now
tasks
can be passed toBFTask<AnyObject>.forCompletionOfAllTasksWithResults
.