「古い」コード (それほど古いものではありませんが、開発者が去ったので、彼のコードを文書化してレビューしています) をレビューしていたとき、iOS 共有拡張機能のコンテキストで、次の 2 行を見つけました。
let content = self.extensionContext!.inputItems[0] as! NSExtensionItem
for attachment in content.attachments as! [NSItemProvider] {
最初の行: 私はドキュメントを赤くし、inputItems
空の可能性もあることがわかったので、このことが発生した場合、強制キャストはアプリをクラッシュさせると思います (正確な方法はわかりませんが、可能性があるかもしれません)。
2 行目: 上記と同じですが、1 行目にクラッシュがない場合、ここにもクラッシュがない可能性が高いという違いがあります。
inputItems
質問 1:ループの前の長さを確認するのは良い考えですか?
質問 2: このコードを少し編集し、最初の行を次のように変更しました。
let content = self.extensionContext!.inputItems[0] as? NSExtensionItem
その後、XCode は、私があまり好きではない 2 行目の修正を提案します (私はそれが判読できないと考えています)。
for attachment in (content?.attachments as? [NSItemProvider])!
XCodeの提案は進むべき道ですか?
どんなコメントでも大歓迎です。ありがとう!