2017-05-31 1 views
1

J'ai des problèmes avec la gestion de base des fichiers ouverts depuis des sources externes dans iOS en utilisant Swift. Je tente d'exporter/importer des données à partir d'un type de fichier personnalisé (un fichier texte simple avec une extension personnalisée) par courrier électronique. Je n'ai aucun problème avec l'exportation du fichier et l'envoi en pièce jointe depuis l'application. J'ai également pu associer le type de fichier à mon application en éditant le fichier info.plist. Cependant, je n'ai aucune idée comment/où implémenter la fonction pour gérer le fichier une fois que j'ai choisi de l'ouvrir avec mon application.Traitement de fichiers ouverts à partir de sources externes dans iOS/Swift

Après avoir fait quelques recherches j'ai trouvé ce tutoriel: https://www.raywenderlich.com/1980/email-tutorial-for-ios-how-to-import-and-export-app-data-via-email-in-your-ios-app

Cependant, toutes les instructions sur la gestion des fichiers sont présentés dans l'objectif C.

Toute aide à ce serait grandement apprécié.

Répondre

2

La seule partie qui importe est cette partie:

// Add at end of application:didFinishLaunchingWithOptions 
NSURL *url = (NSURL *)[launchOptions valueForKey:UIApplicationLaunchOptionsURLKey]; 
if (url != nil && [url isFileURL]) { 
     [rootController handleOpenURL:url];     
} 

// Add new method 
-(BOOL) application:(UIApplication *)application handleOpenURL:(NSURL *)url { 

    RootViewController *rootController = (RootViewController *) [navigationController.viewControllers objectAtIndex:0]; 
    if (url != nil && [url isFileURL]) { 
     [rootController handleOpenURL:url];     
    }  
    return YES; 

} 

Le premier bloc de code est ajouté à votre application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?)

de AppDelegate L'équivalent Swift est

if let options = launchOptions, let url = options[.url] as? URL, url.isFileURL { 
    // call some code to handle the URL 
} 

et cette nouvelle fonction pour l'AppDélégué:

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool { 
    if url.isFileURL { 
     // call some code to handle the URL 
    } 
    return true // if successful 
} 

Tout le reste du code dans l'article est un moyen d'acheminer le code de gestion vers le contrôleur de vue racine. Vous pouvez simplement le gérer directement dans AppDelegate ou l'acheminer vers une autre classe si vous le souhaitez.