私はiMessage AppをSwift 4にアップグレードしようとしています。このセクションのコード例はSwift 3で完全に機能しましたが、Swift 4に移行しようとするとエラーが発生します。クラスは、ファイルがメインのアプリターゲットとiMessageアプリの一部です。Swift 4 Errorエクステンションでコードを実行中
#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 Appsで利用できないので完全に意味を成します。
これまでの仕事はOther Swift Flags
です。私は-DIN_EXTENSION
をiMessageアプリ拡張に追加しましたが、メインアプリは追加しませんでした。
私のiMessage Appとメインアプリの間には多くの類似点があります。だから、コードをきれいにして、コードを繰り返さないようにしたい。だからこれは可能なはずです。
スウィフト4に変換した後、突然それがエラーを投げている理由はわかりません。
修正方法についてのご意見はありますか?
明らかに、iMessageでも '#else'に潜んでいます。 – matt
@mattこれを分かりました。突然それを再構築する何らかの理由で、まったく違うエラーが出ました。それらを修正した後、このエラーは完全に消え去った。 Xcodeなどのバグのようです。 –
非常に可能!誤解を招くエラーは、他のエラーがある場合に発生します。あなたがそれを整理してうれしいです。 – matt