【问题标题】:Why am I getting this error using firstIndex(where:为什么我使用 firstIndex(其中:
【发布时间】:2020-08-24 02:57:20
【问题描述】:

我有一个类类型“Word”的数组,并试图根据我试图通过使用Words.words.firstIndex(where: {$0.id == wordId}) 来实现这一点从数组中获取正确的“Word”。但我收到此错误:Cannot convert value of type 'Array<Word>.Index?' (aka 'Optional<Int>') to expected argument type 'Word'

谢谢!

代码:

    var randomIds:[Int] = []
    
    for _ in 1 ... 4 {
        
        //to make sure there aren't duplicates
        var wordId:Int = Int.random(in: 0..<Words.words.count)
        while randomIds.contains(wordId){
            wordId = Int.random(in: 0..<Words.words.count)
        }
        randomIds.append(wordId)
        
        
        
        answers.append(Answer(id: wordId, isChosen: false, isAnswer: false, word: Words.words.firstIndex(where: {$0.id == wordId})))
    }

“单词”类:

class Words{

    static var words:[Word] = [Word(id: 0, EnglishWord: "Hello", DariWord: "Salaam"),Word(id: 1, EnglishWord: "Bread", DariWord: "Naan"),Word(id: 2, EnglishWord: "Thank You", DariWord: "Tashakor"),Word(id: 3, EnglishWord: "Yes", DariWord: "Baleh"), Word(id: 4, EnglishWord: "a", DariWord: "a"), Word(id: 5, EnglishWord: "b", DariWord: "b"), Word(id:6, EnglishWord: "c", DariWord: "c"), Word(id: 7, EnglishWord: "d", DariWord: "d")]

}

struct Word: Codable, Identifiable{

    var id: Int
    var EnglishWord:String
    var DariWord:String
    
    init(id: Int, EnglishWord: String, DariWord:String)
    {
        self.id = id
        self.EnglishWord = EnglishWord
        self.DariWord = DariWord
    }
    //Do Json Stuff (Decoding/Encoding)
}

【问题讨论】:

    标签: arrays swift xcode


    【解决方案1】:

    请仔细阅读您的代码和错误信息。错误很明显:

    您正在获取数组中单词的索引,而不是单词本身。删除Index

    Words.words.first(where: {$0.id == wordId})
    

    【讨论】:

      猜你喜欢
      • 2022-12-07
      • 1970-01-01
      • 2021-10-26
      • 1970-01-01
      • 2021-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多