起こった問題
UIDocumentBrowserViewController、みなさん使ってますか?
使ってるわけないですよね。私は使ってます。
iCloudにファイル保存しようと思ったら、UIDocumentBrowserViewControllerを使うのが圧倒的に簡単なんです。とはいえ、マルチプラットフォームでアプリ開発しようと思うと、iCloudって微妙ですよね。だから人気がないんだと思います。だけど、Apple信者には関係のない話です。
さて、私の作っている小説エディタ「おめめライター」では、UIDocumentBrowserViewControllerでプレーンテキストファイルを取り扱っています。テキストファイルを新規作成するのには、以下のようなコードを書いてます。
func documentBrowser(_ controller: UIDocumentBrowserViewController, didRequestDocumentCreationWithHandler importHandler: @escaping (URL?, UIDocumentBrowserViewController.ImportMode) -> Void) {
if let url = Bundle.main.url(forResource: "File", withExtension: "txt") {
importHandler(url, .copy)
} else {
importHandler(nil, .none)
}
}
バンドルファイルのFile.txtという空テキストファイルをテンプレートにして、それをユーザが指定した場所にコピーするわけですね。
iOS13がリリースされたので、さっそくXCode11をインストールしてダークモード対応をしようと思ったのですが、シミュレータを立ち上げて新規ファイルを追加しようとしたところ、ウンともスンとも言わなくなってしまったのです。そして、以下のようなエラーが。
...
error Error Domain=NSPOSIXErrorDomain Code=22 "couldn't issue sandbox extension com.apple.app-sandbox.read for ...
NSPOSIXErrorDomain Code=22
ってなんでしょう?
そんな大層なことをしているわけでもないのに、なぜこんなエラーが出るのかわかりません。というか、ファイルが追加できないなんてエディタとして終わってます。
慌てて実機で動かしてみると、iOS13でも問題なく動きます。
これは何かシミュレータの問題なんだろうなと思って調べたら、以下のような記事を見つけました。
UIDocumentBrowserViewController error “Cannot create urlWrapper for url” on iOS13 simulator
I have a very strange problem with UIDocumentBrowserViewController when testing on iOS 13. The importHandler(newDocumentURL, .move) seems to crash without any reason
I've verified that the bug exists with Xcode 11.1 GM running on Mac OS Mojave.
Mojaveで動かすXCode11.1GMにバグがあるみたいです。
私の環境はXCode11.0 (11A420a)なんですが、まったく同じ現象が起きてますね。
というか、UIDocumentBrowserViewControllerを使っている人って私以外にもいたんですね。世界は広い。
#解決策
当面はCatalinaのベータを使うくらいしかないみたいです。
ていうか今投稿しようとしたらUIDocumentBrowserViewController
のタグは長すぎるって言われたわ。
さあ、みんなも使おう、UIDocumentBrowserViewController!