1. ホーム
  2. swiftui

[解決済み] SwiftUIでXcodeのコンソールにprint()する方法は?

2023-04-11 12:51:32

質問

SwiftUIビューでデバッグ中にprint文を入れようとしました。

print("landmark: \(landmark)")

以下のようなボディで

var body: some View {
    NavigationView {
        List {
            Toggle(isOn: $userData.showFavoritesOnly) {
                Text("Favorite only")
            }
            ForEach(landmarkData) { landmark in
                print("landmark: \(landmark)")
                if !self.userData.showFavoritesOnly || landmark.isFavorite {
                    NavigationButton(destination: LandmarkDetail(landmark: landmark)) {
                        LandmarkRow(landmark: landmark)
                    }
                }
            }
        }
       .navigationBarTitle(Text("Landmarks"))            
    }
}

コンパイラがエラーになります。

では、SwiftUIでコンソールに出力する適切な方法は何でしょうか?

EDITです。 Landmarkに準拠するようにした CustomStringConvertible :

struct Landmark: Hashable, Codable, Identifiable, CustomStringConvertible {

var description: String { name+"\(id)" }

var id: Int
var name: String
.....

まだ "String is not convertible to any" というエラーが表示されます。今すぐ動作させるべきでしょうか?

どのように解決するのですか?

少なくとも Xcode 12/Swift 5.3 では、単にその戻り値をワイルドカードに格納することによって、関数ビルダーの任意の場所に print 文を簡単に追加でき、事実上無視することができます。

let _ = print("hi!")

設定などの冗長性は不要!