[英]Text with string interpolation of Enum value, No exact matches in call to instance method 'appendInterpolation'
[英]Instance method 'appendInterpolation(_:formatter:)' requires that 'Any' inherit from 'NSObject'
我有一系列字典。 但是我想將字典中的特定鍵顯示為文本。 但我不斷收到錯誤“實例方法'appendInterpolation(_:formatter :)'要求'Any'繼承自'NSObject'”
這是我的字典
[
["nickname":"Spurs","Pts":21],
["nickname":"Liverpool","Pts":20]
]
這是打印出數組的代碼
struct TeamList: View {
var clubRanking: [[String:Any]] = [["nickname":"Spurs","Pts":21],["nickname":"Liverpool","Pts":20]]
var body: some View {
VStack(alignment: .leading) {
Text("\(clubRanking[0]["nickname"])") //The error happens here
}
}
}
struct TeamList_Previews: PreviewProvider {
static var previews: some View {
TeamList()
}
}
不要使用[String:Any]
來存儲您的數據模型。 創建一個適當的 model 類型並存儲該類型的Array
。
struct ClubRanking {
let nickName: String
let points: Int
}
struct TeamList: View {
let rankings = [ClubRanking(nickName: "Spurs", points: 21), ClubRanking(nickName: "Liverpool", points: 20)]
var body: some View {
VStack(alignment: .leading) {
Text("\(rankings[0].nickName)")
}
}
}
如果要顯示完整排名,還可以使ClubRanking
符合CustomStringConvertible
並在ForEach
中顯示rankings
每個元素的description
屬性。
extension ClubRanking: CustomStringConvertible {
var description: String {
"Team: \(nickName), points: \(points)"
}
}
struct TeamList: View {
let rankings = [ClubRanking(nickName: "Spurs", points: 21), ClubRanking(nickName: "Liverpool", points: 20)]
var body: some View {
VStack(alignment: .leading) {
ForEach(rankings, id: \.nickName) { ranking in
Text(ranking.description)
}
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.