【问题标题】:Can't show verses in label无法在标签中显示诗句
【发布时间】:2018-12-19 02:28:57
【问题描述】:

我正在尝试显示一个数组的随机项,我有这个文件:

//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?'”

是的,我知道我不能分配它们,因为它们来自不同的类型,那么我该如何分配它们呢?

【问题讨论】:

    标签: ios arrays swift random struct


    【解决方案1】:

    HomeViewController 类中,您可以尝试使用Int.random[例如] 为verseLbl 分配随机值,而不是分配verseModel,您应该分配VersesMock 类的verse 对象,例如

    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
    }
    

    【讨论】:

      【解决方案2】:

      您可以使用 Swift 4.2 中引入randomElement()

      verseLbl.text = verses.randomElement()?.verse
      

      【讨论】:

      • @LucasOliveiraFerreira 和?
      • "无法将 '[VerseModel]' 类型的值赋给类型 'String?'"
      • @LucasOliveiraFerreira 请仔细检查答案。
      • 抱歉,我快睡在键盘上了。
      • @LucasOliveiraFerreira 我去过那里。 :'D
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-04
      • 2011-12-09
      相关资源
      最近更新 更多