【发布时间】:2017-07-21 22:37:10
【问题描述】:
我正在尝试使用 Swift 4 中的字典。我正在尝试从属于字典中随机选择的键的几个值创建一个数组。我不确定我需要如何在 Swift 4 中做到这一点。
//: Dictionary Test
import UIKit
var database = ["Albert Einstein": ["Alberts first quote",
"Alberts second quote",
"Alberts third quote"],
"Martin Luther King": ["Martin's first quote",
"Martin's second quote",
"Martin's third quote"],
"Newton": ["Newton's first quote",
"Newton's second quote",
"Newton's third quote"]]
func randomQuote(){
//Make an array from database keys
var authorArray = Array(database.keys)
//Pick a random author
let author = (authorArray[Int(arc4random_uniform(UInt32(authorArray.count)))])
//Make an array from values based on the author we've picked (HERE'S THE PROBLEM)
let quoteArray = Array(database[author].values)
//Pick a random quote from the choses author
let quote = (quoteArray[Int(arc4random_uniform(UInt32(quoteArray.count)))])
print(author)
print(quote)
}
randomQuote()
现在显然let quoteArray = Array(database[author].values) 不起作用。有人知道这将如何工作吗?
【问题讨论】:
-
database[author]返回一个可选项,您必须将其解包。这似乎是少数可以接受强制展开的情况之一 -
考虑在
Collection上写一个扩展,给你一个随机元素;那么你只需要说let (author, quotes) = database.randomElement(); let quote = quotes.randomElement():)
标签: swift dictionary random key