2015-07-10 45 views
1

我有一個根辭典以下的plist條目:過濾的AnyObject []斯威夫特

plist entry

我裝成一個可變字典:

var TabRecordKey = "TabRecord" 
var TabRecordID: AnyObject = [] 

     let resultDictionary = NSMutableDictionary(contentsOfFile: path) 
    println("Loaded DrinksData.plist file is --> \(resultDictionary?.description)") 
    var myDict = NSDictionary(contentsOfFile: path) 
    if var dict = myDict { 
     //loading values 
     TabRecordID = dict.objectForKey(TabRecordKey)! 

所有可愛,我可以將對象追加到TabRecordID,保存它們,在控制檯中打印記錄。

但現在我想我TabRecordID進行過濾,只顯示項目,比方說,對於這TabRecord [I] [0] = 「荷馬史詩」

我已經試過:

for i in 0..<TabRecord.count { 
filter(TabRecordID) {TabRecord[i][0] = "Homer"} 
} 

但由於TabRecordID是AnyObject,夫特回覆:

通用參數 'S' 可以不被綁定到非易失@ objc協議類型 'AnyObject'

我嘗試:

let filteredArray = TabRecordID[i].filter() { TabRecordID[i][0] == "Homer"} 

但得到:

'AnyObject' 沒有一個名爲 '過濾器'

我嘗試員:

let filteredArray = (TabRecordID[i] as! Array).filter() { TabRecordID[i][0] == "Homer"} 

但是得到:

不能援引「過濾器」類型的參數列表「(() - > _)」

我知道我失去了一些東西有關雨燕鑄造基本在這裏,但它的駕駛我心理,我不能在這裏找到適用的相關問題。幫助一個新人,有人,並告訴我我的方式的錯誤。有愛心,我真的想在這裏...

回答

1

試試這個

let pridicate = NSPredicate(block: { (obj, dic) -> Bool in 
      let array = obj as! NSArray 
      let str = array.firstObject as! String 
      return str=="Homer" 
     }) 
     let filterdResult = TabRecordID.filteredArrayUsingPredicate(pridicate) 
     println(filterdResult) 

這將記錄

[(
Home, 
Bear, 
2 
)] 

只是一個例子,你可以在實際情況下,使用可選的unwarpping

+0

Oh.My.God。你是一個巫師。現在我不得不把這些書放到爲什麼會奏效的地方,但是它恰恰擺脫了我期待的結果。乾杯! – brianfit