Arrays 如何从Swift中的数组中获取包含子元素的项?

Arrays 如何从Swift中的数组中获取包含子元素的项?,arrays,swift,loops,Arrays,Swift,Loops,我有一个引号类,它包含一个充满引号的数组。下面的代码显示了两个。每个引文都有作者、归属和布尔,分别是hasSeen和hasaved 我想一次显示一个随机引用。当用户刷新屏幕时,他们会得到另一个报价。当我放入.randomElement()时并打印结果,我得到appName.Quote 是否有方法访问此数组中的随机引号?我希望能够向最终用户显示文本和属性 var quotes:[Quote] = [ Quote( quoteText: "The only way to ma

我有一个引号类,它包含一个充满引号的数组。下面的代码显示了两个。每个引文都有作者、归属和布尔,分别是
hasSeen
hasaved

我想一次显示一个随机引用。当用户刷新屏幕时,他们会得到另一个报价。当我放入
.randomElement()时并打印结果,我得到
appName.Quote

是否有方法访问此数组中的随机引号?我希望能够向最终用户显示文本和属性

var quotes:[Quote] = [
    Quote(
        quoteText: "The only way to make sense out of change is to plunge into it, move with it, and join the dance.",
        quoteAttribution: "Alan Watts",
        hasSeen: false,
        hasSaved: false),
    Quote(
        quoteText: "Luck is what happens when preparation meets opportunity.",
        quoteAttribution: "Seneca",
        hasSeen: false,
        hasSaved: false)
]

您可以扩展swift的阵列以具有此功能:

extension Array {
    func randomItem() -> Element? {
        if isEmpty { return nil }
        let index = Int(arc4random_uniform(UInt32(self.count)))
        return self[index]
    }
}
您可以像这样访问随机报价:

let quote = quotes.randomItem()

在一个旁注中,由于您处理的是固定的/ STATITC内容/结构,请考虑使用以存储Quote

FYI——您不应该将所有这些数据都放入代码中。将其存储在文件或数据库中,并在运行时加载所需内容。太棒了!非常感谢你的帮助!不,不要考虑使用元组。
Quote
的结构是正确的方法,而不是元组。