簡體   English   中英

快速循環NSDictionaries數組

[英]Looping an array of NSDictionaries in swift

好的,試圖趕上最后一趟學習Swift的火車,我遇到了類似的問題,但我沒有讓他們解決我的問題。

我有一個NSDictionary叫做entries ,對應於鍵"TYPES"的值之一是NSDictionaries的NSArray 我試圖遍歷后一個NSDictionary並為鍵"TID"檢索一個整數值,我正在做:

for dict in entries["TYPES"] as NSDictionary {
   let tid : Int = typeDict["TID"]
}

但是我收到錯誤消息:( (key: AnyObject, value: AnyObject)沒有名為“ subscript”的成員

我了解這是由於entries["TYPES"]anyObject! 並且來自Xcode 6 beta 6,在該版本中,許多Foundation API已通過審計以檢查是否符合可選規范,因此需要解包,但是我盡最大努力進行了解包,但未成功,編譯器始終在抱怨另一件事。 有人知道該怎么做嗎?

如果這是您的詞典的樣本:

var entries: NSDictionary = [
    "TYPES": [
        [],
        ["TPD": 2],
        ["TID": 4]
    ] as NSArray
]

你必須:

  • 檢索由TYPES鍵標識的元素,並嘗試轉換為NSArray
  • 遍歷數組的所有元素
  • 嘗試將每個元素NSDictionaryNSDictionary
  • 檢查TID密鑰是否存在,並讀取其值
  • 如果該值不為nil,則搜索結束

這是代碼:

var tid: Int?
if let types = entries["TYPES"] as? NSArray {
    for type in types {
        if let dict = types.lastObject as? NSDictionary {
            tid = dict["TID"] as? Int
            if tid != nil {
                break
            }
        }
    }
}

使用示例數據在操場上運行代碼,我看到的輸出是{Some 4}

但是,我會考慮@Zaph的建議,並使用結構和/或類以其他方式對數據建模

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM