无法通过调试器查看传递的 SwiftUI 参数值

Unable to view a passing SwiftUI parameter value via debugger

场景: 我想在调试器中查看 CountryRegionListModel() 的一个参数。
以下是视图及其依赖模型片段:

import Combine
import UIKit

protocol URLResource {
    associatedtype DataModel: Decodable
    var url: URL? { get }
}

struct CovidResource<T: Decodable>: URLResource {
    typealias DataModel = T
    var url = URL(string: "https://disease.sh/v3/covid-19/apple/countries/Canada")
}

// =====================================================================================================

class CountryRegionListModel: ObservableObject {
    @Published var countryRegionList: [String] = []

    // Data Persistence:
    var cancellables: Set<AnyCancellable> = []

    // ---------------------------------------------------------------------------

    func getList<Resource>(urlDataModel: Resource) where Resource: URLResource {
        let remoteDataPublisher = URLSession.shared.dataTaskPublisher(for: urlDataModel.url!)
            .map(\.data)
            .receive(on: DispatchQueue.main)
            .decode(type: Resource.DataModel.self, decoder: JSONDecoder())

        remoteDataPublisher
            .sink(receiveCompletion: { completion in
                switch completion {
                case .finished:
                    print("Publisher Finished")
                case let .failure(anError):
                    Swift.print("received error: ", anError)
                }
            }, receiveValue: { [self] someValue in
                self.countryRegionList = someValue as! [String]
            }).store(in: &cancellables)
    }
}

在这里,我调用了一个子选择器视图来显示注入其中的数据。
我想通过调试器检查此数据:countryListViewModel.countryRegionList

CountryRegionPickerView(countryRegionList: $countryListViewModel.countryRegionList)
                            

我不明白为什么会这样。
我如何检查是否有数据传递到子视图中?

由于您的 countryListViewModel 存储在 属性 包装器中,因此没有存储的 属性 名为 countryListViewModel。相反,存储的 属性 被命名为 _countryListViewModel。调试器不理解这一点(可能是因为编译器没有在调试信息中正确解释它)。

countryListViewModel 属性 实际上是一个计算的 属性,它的 getter 本质上只是 _countryListViewModel.wrappedValue。所以试试这个:

po _countryListViewModel.wrappedValue.countryRegionList

或者(因为 countryRegionList 也是一个包装 属性)可能是这样的:

po _countryListViewModel.wrappedValue._countryRegionList.wrappedValue