ShareExtensionの入力テキストとファイル名
以前ShareExtensionで画像を保存するサンプルを作ったのですが、保存する際の名前の取り方と、コメントの取得方法を別途調べたのでまとめておきます。
コメントの取得
Share Extensionではファイルを送信する際にコメントを入力することができます。contentTextというプロパティが値を保持しています。
self.contentText
アプリ側でコメントを使う際はUserDefaultsなどに保存する必要があります。
isContentValid()メソッドで入力コメントの判定を行うことができます。から文字の判定やSNSなどであれば不適切な単語を含んでいる場合弾くみたいなことができると思います。
以下の様にから文字を弾くとpostボタンが押せなくなります。
override func isContentValid() -> Bool {
if self.contentText.isEmpty {
return false
}
return true
}
placeholderにテキストを入れておくと入力フォームが空の時に文字を表示させることができます。
placeholder = "テキストを入力してください"
ファイル名の取得
ファイル名の取得はURLをsplitして取得を行います。
メソッドが用意されていると思ったのですが、公式ドキュメントをみてもそれらしいものを見つけることができませんでした。
override func didSelectPost() {
let extensionItem: NSExtensionItem = extensionContext?.inputItems.first as! NSExtensionItem
let itemProvider: NSItemProvider = extensionItem.attachments!.first!
let suiteName: String = "group.hogehoge.dev"
if itemProvider.hasItemConformingToTypeIdentifier(String(kUTTypeData)) {
itemProvider.loadItem(forTypeIdentifier: String(kUTTypeData), options: nil, completionHandler: { item, error in
if let firmwareURL = item as? URL {
let splitData = firmwareURL.absoluteString.split(separator: "/")
let filename = splitData.last
print(String(filename!))
}
self.extensionContext!.completeRequest(returningItems: [], completionHandler: nil)
})
}
}