任意のファイル名で「ファイルに保存」する

UIActivityViewControllerで「ファイルに保存」を選択した際に、
なんか適当なファイル名が適用されてしまうので、
それをなんとかする方法を調べてました。

一度、適当なファイルに書き出せば、
その際のファイル名が適用されるって書いてあるのを見かけて、
お試しでやったらうまくいったので自分用にメモです。
(これ書いてて気づいたけど、エラー時に続行したらいけないやつだ…)

    // let text = "書き出したい文字列"

    let path = NSTemporaryDirectory() + "test.txt"
    let url = URL( fileURLWithPath: path )
    do {
        try text.write( to: url, atomically: true, encoding: .utf8 )
    } catch {
        print( error )
    }

    let activityController = UIActivityViewController(
        activityItems: [ url ],
        applicationActivities: nil )
    activityController.popoverPresentationController?.sourceView = self.view
    activityController.popoverPresentationController?.sourceRect = self.view.frame
    self.present( activityController, animated: true )

すると、こうなる。

でも今、作ってるアプリで実装してみたんだけどボツになったので、
ブログでお焚き上げしました。

ボツになった理由ですが、「ファイルに保存」とか、
メール等の添付ファイルに適用されることは良いのですが、
例えば、そもそもファイル添付されたくない場合(コピー等)もあるので、
UIActivityViewControllerで選べるアイコンを制限した上で、
ファイル名を適用したい場合に、この記事を書いたことを思い出したいと思います。

おしまい。

Leave a Comment