UIActivityViewController для кмл и текстовых файлов - PullRequest
0 голосов
/ 06 апреля 2020

Я использовал следующий код, чтобы сохранить пару файлов в приложении iPhone. Одним из них является прямой текстовый файл со списком долготы и широты. Второй файл аналогичен коду KML для отображения меток с такими же координатами. Код работает для генерации двух файлов, как ожидается, с расширениями .txt. Я хотел бы создать два разных расширения: .txt для простого текстового файла и .kml для второго. Причиной расширения .kml является возможность отображать эти координаты в приложении Google Планета Земля на iPhone. Любая помощь будет принята ...

    let activityViewController = UIActivityViewController(activityItems: [kml, locations], applicationActivities: nil)
    present(activityViewController, animated: true, completion: nil)``

Два массива ActivityViewController содержат кмл и текстовый код соответственно.

1 Ответ

0 голосов
/ 07 апреля 2020

Это способ, которым я решил это ... Я уверен, что это не самый эффективный способ, но он работает :-). Все еще ищем более эффективный способ, так как этот метод генерирует временный файл, добавляя к служебной информации приложения ... Кроме того, пользователь должен сохранить файл дважды, один раз для kml и еще раз для текстового файла. Так или иначе, надеюсь, что это помогает другим.

    let kmlFile = "soofie_loc.kml"
    let tmpDir = FileManager.default.temporaryDirectory
    var fileURL : URL?
    fileURL = tmpDir.appendingPathComponent(kmlFile)
    let data = Data(kml.utf8)
    do {
        try data.write(to: fileURL! , options: .atomic)
    } catch {
        print(error)
    }


    //let activityViewController = UIActivityViewController(activityItems: [kml, locations], applicationActivities: nil)
    if ( !kmlOption ) {
        let activityViewController = UIActivityViewController(activityItems: [locations], applicationActivities: nil)
        present(activityViewController, animated: true, completion: nil)
    }
    else {
        let activityViewController = UIActivityViewController(activityItems: [fileURL!], applicationActivities: nil)
        present(activityViewController, animated: true, completion: nil)
    }
...