I will refactor it a little differently:
private func playEpisode() {
var trackUrl: URL
if let fileUrl = self.episode.fileUrl {
guard var trueLocation = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first else { return }
guard let fileURL = URL(string: fileUrl) else { return }
let fileName = fileURL.lastPathComponent
trueLocation.appendPathComponent(fileName)
trackUrl = trueLocation
print("from file")
} else {
print("from stream")
guard let streamUrl = episode.streamUrl, let url = URL(string: streamUrl) else { return }
trackUrl = url
}
let playerItem = AVPlayerItem(url: trackUrl)
player.replaceCurrentItem(with: playerItem)
player.play()
playPauseButton.setImage(#imageLiteral(resourceName: "pause"), for: .normal)
}