Изменение свойства изображения UIImage с именем изображения, установленным в словаре - PullRequest
0 голосов
/ 12 декабря 2018

Я создаю простое приложение, в котором вы нажимаете кнопку, и изображение меняется случайным образом, но я также хочу добавить метку, которая описывает изображение, поэтому я создал словарь, содержащий ["fileName":"Description"], но когда я пытаюсь изменить изображениеЯ получаю сообщение об ошибке:

"Невозможно подписать значение типа '[String: String]' с индексом типа 'Int'"

var randomNumber = 0
let arrayOfImages : [String:String] = ["ball1":"yes","ball2":"no","ball3":"ask again later","ball4":"the answer is yes","ball5":"i dont know"]

func rollButton() {
    randomNumber = Int.random(in: 0...4)
    ballImage.image = UIImage(named: arrayOfImages[randomNumber])
}

Какя могу изменить UIImage.image, используя Dictionary?

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Заменить

ballImage.image = UIImage(named: arrayOfImages[randomNumber])

на

ballImage.image = UIImage(named: Array(arrayOfImages.keys)[randomNumber])

Поскольку вы не можете подписать словарь для массивов, рекомендуется создать

struct Item { 
    let imageName:String 
    let des:String 
}

let arr = [Item(imageName: "ball1", des: "con1"),Item(imageName: "ball2", des: "con2"),Item(imageName: "ball3", des: "con3")]
let ran = arr[Int.random(in: 0...2)]
ballImage.image = ran.imageName
0 голосов
/ 12 декабря 2018

Вы создаете список [String: String], поэтому вы должны получить к нему доступ, используя ключ (String), а не число (Int).

Поэтому вы должны исправить это:

ballImage.image = UIImage(named: arrayOfImages["ball\(randomNumber)"])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...