簡體   English   中英

實例方法 'appendInterpolation(_:formatter:)' 要求 'Any' 繼承自 'NSObject'

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM