Не могу показать стихи на этикетке - PullRequest
0 голосов
/ 19 декабря 2018

Я пытаюсь показать случайный элемент массива, у меня есть этот файл:

//VerseModel.swift

import Foundation

struct VerseModel { 
   var verse = ""
   var reference = ""
   var date = Date()

}

Этот файл:

//VersesMock.swift

import Foundation

struct VersesMock {
    var verses: Array<VerseModel> = [
        VerseModel(verse: "Teste 1", reference: "Mt 13:2", date: Date()),
        VerseModel(verse: "Teste 2", reference: "Mt 14:2", date: Date()),
        VerseModel(verse: "Teste 3", reference: "Mt 15:2", date: Date()),
        VerseModel(verse: "Teste 4", reference: "Mt 16:2", date: Date()),
        VerseModel(verse: "Teste 5", reference: "Mt 17:2", date: Date()),
        VerseModel(verse: "Teste 6", reference: "Mt 18:2", date: Date()),
        VerseModel(verse: "Teste 7", reference: "Mt 19:2", date: Date()),
        VerseModel(verse: "Teste 8", reference: "Mt 20:2", date: Date()),
        VerseModel(verse: "Teste 9", reference: "Mt 21:2", date: Date())
    ]
}

И это:

import UIKit

final class HomeViewController: UIViewController {

@IBOutlet weak var nameLabel: UILabel!
@IBOutlet weak var verseLbl: UILabel!

var user = UserMock()
var verses = VersesMock().verses

override func viewDidLoad() {
    super.viewDidLoad()
    nameLabel.text = user.name
    verseLbl.text = verseModel
}

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}
}

Я пытаюсь сделать что-то подобное, но оно говорит:

"Невозможно присвоить значение типа '[VerseModel] 'для ввода' String? '"

Да, я знаю, что не могу назначить их, потому что они из разных типов, так как я могу назначить их?

Ответы [ 2 ]

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

Вы можете использовать randomElement(), который был введен в Swift 4.2 .

verseLbl.text = verses.randomElement()?.verse
0 голосов
/ 19 декабря 2018

В HomeViewController классе вы можете попробовать присвоить случайные значения verseLbl, используя Int.random [например], и вместо verseModel вы должны назначить стих-класс VersesMock класса, например

var verses = VersesMock().verses

override func viewDidLoad() {
    super.viewDidLoad()

    let count = verses.count
    let randomIndex = Int.random(in: 0...(count - 1)) //or use your specific array index
    nameLabel.text = user.name
    verseLbl.text = verses[randomIndex].verse
}
...