fileprivate permet de créer des objets visibles seulement dans le fichier où ils sont définis.
Imagine que j’ai besoin d’une classe pour fabriquer des noms de personnes aléatoirement. Elle necessite une liste de noms et de prénoms pour fonctionner. Si je déclare ces listes en début de fichier, elles seront visibles par tous les objets de l’application. Pas très sécurisé comme système, ni discret.
Avec fileprivate, elles ne seront visibles que dans leurs propres fichiers, ce qui limite les risques.
Quelques chose comme (tapé à la main sans vérification ) :
// Classe Générateur Noms
fileprivate listeNoms = ["legendre", "leboisier", "dupont", "dulac", "snow"]
fileprivate listePrenoms = [ "éric", "carl", « robert", "john"]
class GenerateurNom {
// ...
}
Pour le reste de l’application, seule la classe GenerateurNom() existe. listeNoms et listePrenoms sont privés, même si elles ont été déclarées en début de fichier, comme des variables globales.
Evidement, cela n’est pas utile si on programme comme un cochon avec un ENORME fichier contenant TOUT le code, une mauvaise habitude des anciens langages de programmation. 
Dans une démarche saine, en déclarant chaque classe dans son propre fichier, c’est très pratique.
Un autre exemple, c’est la création de constantes uniquement lisible de manière locale.