2017-10-29 12 views
0

앱 스토어에서 작동하는 앱이 있습니다. 과거에는 Xcode에 하나의 타겟이있는 앱 버전이 하나 밖에 없었습니다. 개발주기가 조금 더 복잡 해짐에 따라 두 가지 Xcode 대상 (생산 및 개발)이 필요합니다. 이 두 대상에는 두 개의 다른 번들 식별자가 있으므로 전화에서 다른 버전을 동시에 실행할 수 있습니다. 이는 다음과 비슷한 전략입니다. https://www.raywenderlich.com/68613/create-paid-lite-version-iphone-appXcode : 다른 대상에 다른 rootViewController가 있습니까?

기본적으로 raywenderlich 지침에 따라 대상을 복제하고 전처리 매크로를 설정했습니다. 지금까지 유일한 변경 사항은 다른 아이콘을 사용하는 것입니다.

"원래"버전의 앱은 '프로덕션'버전입니다. 새롭게 복제 된 대상은 "개발"버전입니다.

LaunchViewControllerIs Initial View Controller 옵션으로 설정된 스토리 보드를 사용하고 있습니다.

응용 프로그램의 원래 (생산) 버전에서
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 
} 

, 모든 것이 잘 작동하는 것을 계속하십시오 AppDelegate에에서

, 나는 window?.visibleViewController를 통해 루트의 ViewController를 가져 와서 그 위에 몇 가지 정보를 설정하는 코드가 있습니다. 콘솔에 다음 줄이 표시되고 응용 프로그램이 올바르게 시작됩니다.

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

그러나 개발 버전의 응용 프로그램에서는. guard 케이스가 실패합니다. 콘솔에 표시되는 내용은 다음과 같습니다.

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

루트보기 컨트롤러는 프로덕션 및 개발 대상간에 서로 다릅니다. 내가 명시 적으로 설정하지 않는 한 루트보기 컨트롤러가 두 대상간에 어떻게 다른지 알 수 없다.

프로젝트 파일을 검사했는데 두 대상간에 "일반 -> 배포 정보"가 동일합니다. 나는 또한 스토리 보드를 점검했고 거기에는 다른 뷰 컨트롤러를 지정하는 것이 없다.

어떤 아이디어가 있습니까? 어떻게 해결할 수 있습니까?

감사합니다.

답변

0

가! FFS 내가 알아 냈어. 말했다 내가 놓친 다른 로그 행이 있었다 끈다 : 나는 인스턴스화 시도하기 때문에

... Unknown class _TtC8MyApp20LaunchViewController in Interface Builder file. 

가 이걸 발견 내 LaunchViewController 손으로 (스토리 보드)에서뿐만 아니라,이 오류가 발생했습니다. 나는 모듈이 잘못되었다는 것을 알아 냈다.

그럼 내가 묻는 질문은 XCODE 7.1 Swift 2 Unknown class in Interface Builder file으로, Inherit Module From Target이없는 오래된 스토리 보드 요소가 있다는 것을 알게되었습니다. 나는 체크 박스를 on으로 토글했고, 이제는 작동 중이다. 휴.

enter image description here