2017-10-29 16 views
0

私は機能しているアプリを持っています(アプリストア内)。過去には、Xcodeに1つのターゲットを持つアプリケーションのバージョンが1つしかありませんでした。私たちの開発サイクルはもう少し複雑になっています。そのため、2つのXcodeターゲット(生産と開発)が必要です。この2つのターゲットには2つの異なるバンドルIDがあるため、電話で同時に異なるバージョンを実行することができます。これはこれと似た戦略です:https://www.raywenderlich.com/68613/create-paid-lite-version-iphone-appXcode:ターゲットには異なるrootViewControllerがありますか?

私は基本的にraywenderlichの指示に従ってターゲットを複製し、プリプロセッサマクロを設定しました。これまでの唯一の変更は、別のアイコンを使用することです。

「オリジナル」バージョンのアプリは「プロダクション」バージョンです。新しく複製されたターゲットは「開発」バージョンです。

LaunchViewControllerIs Initial View Controllerオプションとして設定されているストーリーボードを使用しています。 AppDelegateで

、私はwindow?.visibleViewController経由ルートのViewControllerを取得し、その上にいくつかの情報を設定するコードがあります:アプリの本来の(生産)のバージョンで

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]? = nil) -> Bool { 
    // ... 
    guard let launchVC = window?.visibleViewController as? LaunchViewController else { 
     NSLog("visibleViewController is nil or not LaunchViewController") 
     return 
    } 
    NSLog("calling startUserManagerAndLogin - launch") 
    launchVC.startUserManagerAndLogin() 
    // ... 
    return true 
} 

を、すべてが正常に動作し続けます。コンソールに次の行が表示され、アプリが正常に起動します。

... Visible View Controller: Optional(<MyApp.LaunchViewController: 0x7f84dea02a00>) 

ただし、開発版のアプリです。私はguardケースが失敗するのを見ている。コンソールに表示される内容は次のとおりです。

... Visible View Controller: Optional(<UIViewController: 0x7fbd1e509570>) 
... visibleViewController is nil or not LaunchViewController 

ルートビューコントローラは、本番環境と開発対象では異なります。私は明示的にそれを設定しない限り、ルートビューコントローラが2つのターゲット間でどのように異なっているのか分かりません。

私はプロジェクトファイルをチェックし、 "General - > Deployment Info"は2つのターゲット間で同じです。私はストーリーボードもチェックしましたが、そこには別のView Controllerを指定するものはありません。

何が起こっているのか、どうすれば修正できるのでしょうか?

ありがとうございます!

答えて

0

ガー! FFS私はそれを理解した。私は(絵コンテから)手で私のLaunchViewControllerをインスタンス化しようとしたとしても、このエラーを得たので

... Unknown class _TtC8MyApp20LaunchViewController in Interface Builder file. 

が、私はこれを見つけた:言った私は逃した別のログ行があったが判明。モジュールが間違っているとわかりました。

次に、が選択されていない古いストーリーボードの要素があることがわかりましたので、SOの質問:XCODE 7.1 Swift 2 Unknown class in Interface Builder fileが見つかりました。私はチェックボックスをオンにして、今は動作しています。 Phew。

enter image description here

関連する問題