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)
}
}
}
}
エラーのスクリーンショット:
エラーメッセージは誤解を招く恐れがあります。
List(itemList) { item in ... }
の要素タイプがプロトコルにitemList
準拠している必要がありIdentifiable
ます。以下のためのクラス(あなたの場合のように)それが宣言プロトコル適合性には十分です
class Item: Identifiable {
// ...
}
(オブジェクト識別子に基づく)デフォルトの実装があるためです。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加