Примените сопоставимый тип значения Int к объекту UIImage в Swift 4 - PullRequest
0 голосов
/ 16 января 2019

Я делаю простую игру на совпадение, и в игре на совпадение пользователь нажимает кнопку, когда изображение животного совпадает со словом, которое представляет имя животного.И изображение, и слово являются UIImages в моем приложении.Я выяснил, как сравнить два объекта изображения в массиве, чтобы определить, соответствуют ли они и применить оценку соответственно ...

if gameMode == 1 {

        if animalWord.image == animalPic.image {

            scoreInt += 1
            scoreLabel.text = String("Score: \(scoreInt)")

        } else {

            scoreInt -= 1
            scoreLabel.text = String("Score: \(scoreInt)")

        }

    }

Однако, это не достигнет того, что мне нужно сделать, потому чтоUIImages не будет идентичным.Таким образом, мне нужно назначить каждому UIImage значение, которое может быть одинаковым, и сравнить эти значения.Другими словами, если я могу присвоить значение 1 для UIImage изображения свиньи, а также присвоить значение 1 для UIImage слова PIG, то я смогу сравнить эти значения, чтобы увидеть, соответствуют ли они,Это должно быть возможно, я просто не могу понять, как.Есть предложения?

1 Ответ

0 голосов
/ 16 января 2019

Используйте структуру и добавьте пользовательский оператор равенства

struct Item : Equatable {
    let image : UIImage
    let value : Int

    static func ==(lhs: Item, rhs: Item) -> Bool {
        return lhs.value == rhs.value
    }
}

Затем создайте экземпляры Item, назначив изображения и соответствующие значения

let item1 = Item(image : UIImage(named: "PigAnimal")!, value: 1)
let item2 = Item(image : UIImage(named: "PigWord")!, value: 1)

и сравните

if gameMode == 1 {

    if item1 == item2 {
        scoreInt += 1                
    } else {
        scoreInt -= 1             
    }
    scoreLabel.text = "Score: \(scoreInt)"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...