我/usr/share/dict/words
文件是一个符号链接/usr/share/dict/words/web2
,韦伯斯特的第二届国际字典从1934年的文件只有2.4MB,所以你不应该看太多性能的命中加载整个内容到记忆。
这是我写的一个小的Swift 3.0片段,用于从字典文件中加载一个随机单词。请记住在运行之前将文件复制到应用程序的包中。
if let wordsFilePath = Bundle.main.path(forResource: "web2", ofType: nil) {
do {
let wordsString = try String(contentsOfFile: wordsFilePath)
let wordLines = wordsString.components(separatedBy: .newlines)
let randomLine = wordLines[numericCast(arc4random_uniform(numericCast(wordLines.count)))]
print(randomLine)
} catch { // contentsOfFile throws an error
print("Error: \(error)")
}
}
雨燕2.2:
if let wordsFilePath = NSBundle.mainBundle().pathForResource("web2", ofType: nil) {
do {
let wordsString = try String(contentsOfFile: wordsFilePath)
let wordLines = wordsString.componentsSeparatedByCharactersInSet(NSCharacterSet.newlineCharacterSet())
let randomLine = wordLines[Int(arc4random_uniform(UInt32(wordLines.count)))]
print(randomLine)
} catch { // contentsOfFile throws an error
print("Error: \(error)")
}
}
雨燕1.2片断:
if let wordsFilePath = NSBundle.mainBundle().pathForResource("web2", ofType: nil) {
var error: NSError?
if let wordsString = String(contentsOfFile: wordsFilePath, encoding: NSUTF8StringEncoding, error: &error) {
if error != nil {
// String(contentsOfFile: ...) failed
println("Error: \(error)")
} else {
let wordLines = wordsString.componentsSeparatedByCharactersInSet(NSCharacterSet.newlineCharacterSet())
let randomLine = wordLines[Int(arc4random_uniform(UInt32(wordLines.count)))]
print(randomLine)
}
}
}
来源
2015-07-16 19:29:15
JAL
“我也不想使数千字的长名单” 那么,你不知道如何做到这一点,但你会排除做到这一点?你如何想象如果你不是从一组东西开始的话,你可以随便选一个_anything_?涉及甲板上随机牌的卡牌技巧需要甲板!如果我伸出空着的手说“拿一张卡片,任何卡片”,你会怎么做? – matt
好吧,你会开始在房间里随意抓东西,检查它们是否是卡,如果他们不继续......但我们也已经消除了这个选项。 –
从您的Mac中复制'/ usr/share/dict/words'到您的应用程序包并使用它。 – JAL