裏面我有一個像如何使用字典一個的plist
<dict>
<key>horse</key>
<dict>
<key>level</key>
<integer>2</integer>
</dict>
</dict>
plist文件中,並通過我的代碼加載波紋管
let path = NSBundle.mainBundle().pathForResource("test", ofType: "plist")
dataBase = NSDictionary(contentsOfFile: path!)
let array = NSMutableArray()
for member in (dataBase.allKeys) {
let level = member.valueForKey("level") as! Int
if() {
//do something
}
}
,當應用程序運行時,它會崩潰。我認爲的原因是dataBase中的成員不能轉換爲NSDictionary,因爲它是NSTaggedPointerString,我不知道如何使它工作。
更新:
前一個問題,我已經解決了由@Wonzigii答案,現在我用這個方法我定義validateCard()右字典,這是@Wonzigii所述波紋管。
func validateCard() -> NSArray?
現在我想隨意檢索新的陣列內的項目用它來做些什麼,什麼我解決這個問題是使用隨機指數,但似乎被我不能得到的數組項索引,因爲如果我這樣做了,我不能用它來獲得下一層字典。接下來我應該做什麼?
if let avaliableCardDeck = self.validateCard() {
for _ in 0...16 {
let maxAvaliableCards = avaliableCardDeck.count
let index = Int(arc4random()) % maxAvaliableCards
let cardInfo = avaliableCardDeck[index]
let newCard = PlayCard()
newCard.rank = cardInfo.valueForKey("number") as! Int
newCard.imageName = cardInfo.valueForKey("imageSource") as? String
addCard(newCard)
}
}
我想我找到了失事原因,但我不能找到解決這個問題的好辦法。就像你提到的那樣,我認爲它會起作用,但是隻對馬,我打算使用allKeys來獲得數組,並且我可以爲數組中的每個項目調用valueForKeyPath。 – Ryan
因爲allKeys我得到一個NSTaggedPointerString的數組,NSString的子類,它不能響應字典的方法,並導致崩潰,我可以有更好的方法將它轉換回NSDictionary? – Ryan
@瑞恩當然可以。看我的編輯。 –