Message from debugger: Terminated due to signal 9

Symptom

Create a SwiftUI app which support two languages (ex. English, and Japanese). Run it in the simulator with debug mode. In the simulator, from the “Settings”, switch the language to another language.Then, XCode displays “Message from debugger: Terminated due to signal 9”.

Discussion

It happens even if a simple initial app as shown below. When the simulator switches a language to another, it restarts the some process and it might disconnect the debug communications. I think it can be ignored in this case.

import SwiftUI

struct ContentView: View {
    @State var message = "Hello, world!"
    var body: some View {
        Text(message)
            .padding()
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

SwiftUI: ForEach, forEach, for in の違い

SwiftUIでは、ForEach, forEach, for in の動きが異なります。

import SwiftUI

struct ContentView: View {
    var body: some View {
        VStack {
            // OK
            // SwiftUI の ForEach は View を返すので OK
            ForEach(1..<5) { i in Text("hello") }
            
            // Error: Closure containing control flow statement cannot be used with result builder 'ViewBuilder'
            // クロージャーを持つ制御文は 複数のView を構成する ViewBuilder として使えない
            // 要は、次のように複数の Text からなる View を構成することができない
            for i in 1..<5 { Text("hello") }
            
            // Error: Type '()' cannot conform to 'View'
            // forEach は View を返さない
            [1,2,3,4].forEach{ d in Text("hello") }
        }
    }
}

XCode UnitTest Error : Multiple commands produce …

Symptom

  1. Create a project.
  2. Add a new target with Swifter by pod install
  3. run a unit test, then Multiple commands produce … error comes up.

Cause

Error Message is as follows.

Multiple commands produce …..
1) Target ‘appname’ has … /appname.app’
2) Target ‘appname_Twitter (iOS)’ has…./appname.app’

It means, there are two files with appname.app for two different targets.

Solution

Rename one of the product name, and clean rebuild.
In my case, I renamed my app with Swifter from TARGETS >> Build Settings “Product Name” from appname to appname2.