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.3公開!

Touchdown 1.3を公開しました。 ダウンロードは こちら から。 Ver.1.3の変更点は以下の通りです。 新機能 macOS Mojave 10.13以降に対応 ダークモードに対応 ぜひお試しください。