0
我试图将我的iMessage应用程序升级到Swift 4.这部分示例代码在Swift 3中完美工作,但在尝试移至Swift 4时出现错误。下面的代码位于类文件是主要应用程序目标的一部分以及iMessage应用程序。Swift 4错误在扩展中运行代码
#if IN_EXTENSION
// Do nothing since it's running in iMessage Extension
print("In extension")
#else
let helper = Helper()
helper.test()
UIApplication.shared.shortcutItems = []
let mainStoryboard = UIStoryboard(name: "Main", bundle: Bundle.main)
let testViewController : UIViewController = mainStoryboard.instantiateViewController(withIdentifier: "Test") as UIViewController
UIApplication.shared.keyWindow?.rootViewController = testViewController
#endif
它给出了错误,如shared is unavailable
。这是完全有道理的,因为它在iMessage应用程序中不可用。
以前的工作原理是如何在Other Swift Flags
我将-DIN_EXTENSION
添加到iMessage应用程序扩展,但不是主应用程序。
我的iMessage应用程序和主应用程序之间有很多相似之处。所以我想保持我的代码清洁,而不是重复代码。所以这应该是可能的。
我不确定为什么在转换到Swift 4后突然出现了错误。
有关如何解决的任何想法?
显然,即使在iMessage中,它也潜入'#else'中。 – matt
@matt刚刚发现了这一点。由于某种原因突然重建时,它给了我完全不同的错误。修复这些错误后,完全消失。看起来像Xcode或其他东西的错误。 –
非常有可能!存在其他错误时会发生误导性错误。很高兴你把事情解决了。 – matt