画像ファイルとかURLとかをドロップする話はそこそこ見つかるけど、JSONファイルをドロップするのに手こずったのでメモ。
NavigationView { ... }
.onDrop(of: ["public.json"], isTargeted: nil) { providers, location in
if let item = providers.first {
item.loadItem(forTypeIdentifier: "public.json", options: nil) { (urlData, error) in
if let url = urlData as? URL {
self.json = loadJson(url: url)
}
}
return true
}
return false
}
"public.json"
のpublic
とはなんなのか?isTargeted
とはなんなのか?Item
と Object
の違いがよーわかってない。urlData
からURL
型を作る過程も1ステップ削除してある。url
は Data(contentOf:)
の引数に使える。