SwiftUIリストのデモを再作成しようとすると、「複雑なクロージャの戻り値の型を推測できません。明確にするために明示的な型を追加してください」というエラーが表示されます。

ロレンツォ・アン

SwiftUIデモを再作成しようとしていますが、自分のオブジェクトを使用したいという違いがありますItem

項目:

class Item {

    var company: String = ""
    var item_class: String = ""
    var name: String = ""
    var stock: Int = 0
    var average_cost: Decimal = 0.00
    var otc_price: Decimal = 0.00
    var dealer_price: Decimal = 0.00
    var ctc_price: Decimal = 0.00

    class var _API_LIST_EP: String {return "api/inventory/items/"}

    // Init and Funcs
    // JToken is an extended typealias for [String : Any] that makes parsing easier
    required init(_ jt: JToken) {
        company = jt.string(forKey: "company")
        item_class = jt.string(forKey: "item_class")
        name = jt.string(forKey: "name")
        stock = jt.int(forKey: "stock")
        average_cost = jt.decimal(forKey: "average_cost")
        otc_price = jt.decimal(forKey: "otc_price")
        dealer_price = jt.decimal(forKey: "dealer_price")
        ctc_price = jt.decimal(forKey: "ctc_price")
    }

}

同様の質問で、問題はオブジェクトの変数の1つがあいまいな状態で初期化されていることに起因していることが指摘されましたが、オブジェクトのすべての変数を埋めた後でも問題が発生します

問題のあるコード:

struct ContentView : View {

    var itemList: [Item] = []
    var body: some View {
        List(itemList) { item in
            Image(systemName: "photo")
            VStack(alignment: .leading) {
                Text(item.name)
                Text(item.company)
                .font(.subheadline)
                .color(.gray)
            }
        }
    }
}

エラーのスクリーンショット:

エラーコード

マーティンR

エラーメッセージは誤解を招く恐れがあります。

List(itemList) { item in ... }

の要素タイプがプロトコルitemList準拠している必要がありIdentifiableます。以下のためのクラス(あなたの場合のように)それが宣言プロトコル適合性には十分です

class Item: Identifiable {
   // ...
}

(オブジェクト識別子に基づく)デフォルトの実装があるためです。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ