2016-02-01 64 views
0

我已經創建了一個簡單的字典:隨機訪問詞典字符串值在一個文件的.plist

let quotes: NSArray = ["hello", "ola", "hi"] 

然後我隨機訪問串在此字典用下面的代碼:

let range: UInt32 = UInt32(quotes.count) 
    let randomNumber = Int(arc4random_uniform(range)) 
    let QuoteString = quotes.objectAtIndex(randomNumber) 
    self.resultLabel.text = QuoteString as? String 

由於我最終會喜歡我的字典中的項目的高處,我應該創建一個.plist文件並將其稱爲「Quotes.plist」 - 管理多個字符串的字典會更容易。

我該如何寫一個簡單的代碼,以隨機訪問我的.plist中的字符串?

修正代碼:

func randomWord() -> String? { 
     guard let 
      path = NSBundle.mainBundle().pathForResource("Quotes", ofType: "plist"), 
      words = NSDictionary(contentsOfFile: path) as? [String:String] else { return nil } 
     let randomIndex = Int(arc4random_uniform(UInt32(words.values.count))) 
     return Array(words.values)[randomIndex] 

我的.plist文件是 「Quotes.plist」。

一個簡單的問題(我提前道歉),但我如何修改self.resultLabel.text = QuoteString as? String,以便隨機報價現在出現在我的resultLabel.txt

+0

'quotes'不是字典,它是一個數組。 –

回答

2

IF你的PLIST被定義爲一個字典,那麼這應該做的工作。否則,請提供關於PLIST結構的模式細節。

func randomWord() -> String? { 
    guard let 
     path = NSBundle.mainBundle().pathForResource("Words", ofType: "plist"), 
     words = NSDictionary(contentsOfFile: path) as? [String:String] else { return nil } 
    let randomIndex = Int(arc4random_uniform(UInt32(words.values.count))) 
    return Array(words.values)[randomIndex] 
} 
+0

我已經修改了我的代碼,並列在上面我最初的問題的底部。我怎樣才能從這個新的功能,以顯示在我的resultLabel.txt插座隨機報價? –

+0

Quotes.plist是一個字典相信:' \t 新項目 \t \t 新項 - 2 \t OLA \t 新項 - 3 \t 你好 ' –

+0

@PaulSatem:只寫'如果讓randomWord = randomWord(){ resultLabel.text = randomWord }其他{ 打印( 「錯誤」) }' –