我正在审查“旧”代码(不是那么旧,但是一个开发人员离开了,我们正在记录和审查他的代码),在 iOS 共享扩展的上下文中,我发现了以下两行:
let content = self.extensionContext!.inputItems[0] as! NSExtensionItem
for attachment in content.attachments as! [NSItemProvider] {
第一行:我红色的文档,发现inputItems
也可以是空的,所以我想如果发生这种情况,强制转换会使应用程序崩溃(我不知道到底是怎么回事,但也许它可以)。
第二行:与上面相同,不同之处在于,如果您在第一行没有崩溃,您可能不会在此处再次崩溃。
inputItems
问题1:检查循环前的长度是个好主意吗?
问题 2:我对这段代码进行了一些修改,并将第一行更改为:
let content = self.extensionContext!.inputItems[0] as? NSExtensionItem
这样做之后,XCode 建议对我不太喜欢的第二行进行更正(我认为它不可读):
for attachment in (content?.attachments as? [NSItemProvider])!
XCode建议是要走的路吗?
任何评论表示赞赏。谢谢!