Swift 4に移行したらファイルのドラッグ時にパスが取り出せない?

TouchdownをSwift 4に変換した際に、フレームワーク側の変更に伴うコードの置換が発生していました。

ファイルのドラッグ&ドロップに関する部分ではドラッグ受付登録が、
register(forDraggedTypes: [NSFilenamesPboardType]);
から
registerForDraggedTypes([NSPasteboard.PasteboardType.fileURL]);
になっています。

NSFilenamesPboardTypeの代わりにfileURLを使うようになったようです。

これに合わせてペーストボードから値を取得する部分が
sender.draggingPasteboard().propertyList(forType: NSPasteboard.PasteboardType.fileURL) as? [String]
のようなコードに置換されたのですが、ここでエラーが発生。

sender.draggingPasteboard().typesにfileURLが含まれているにも関わらず、どうも[String]にうまくキャストできていないようです。

色々調べたところ以下のコードがうまく動きました。
sender.draggingPasteboard().propertyList(forType: NSPasteboard.PasteboardType(rawValue: "NSFilenamesPboardType")) as? [String]

フレームワーク側の不具合でしょうか?
ひとまずワークアラウンドとしてこの対応で進めることにします。

0 件のコメント:

コメントを投稿

Touchdown 1.2公開!

Touchdown 1.2を公開しました。 ダウンロードは こちら から。 Ver.1.2の変更点は以下の通りです。 新機能 macOS High Sierra 10.13以降に対応 コマンドキーを押しながら起動することで設定を保存しない機能を追加 一...