2017-10-07 97 views
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后突然出现了错误。

有关如何解决的任何想法?

+0

显然,即使在iMessage中,它也潜入'#else'中。 – matt

+0

@matt刚刚发现了这一点。由于某种原因突然重建时,它给了我完全不同的错误。修复这些错误后,完全消失。看起来像Xcode或其他东西的错误。 –

+1

非常有可能!存在其他错误时会发生误导性错误。很高兴你把事情解决了。 – matt

回答

-1

由于某种原因,刚刚重建我的应用程序后,这个错误消失了,它给了我完全不同的错误。解决完这些错误后,完全消失了。看起来像Xcode或其他东西的错误。