过滤的AnyObject []斯威夫特
问题描述:
我有一个根辞典以下的plist条目:过滤的AnyObject []斯威夫特
我装成一个可变字典:
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"}
但是得到:
不能援引“过滤器”类型的参数列表“(() - > _)”
我知道我失去了一些东西有关雨燕铸造基本在这里,但它的驾驶我心理,我不能在这里找到适用的相关问题。帮助一个新人,有人,并告诉我我的方式的错误。有爱心,我真的想在这里...
答
试试这个
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
Oh.My.God。你是一个巫师。现在我不得不把这些书放到为什么会奏效的地方,但是它恰恰摆脱了我期待的结果。干杯! – brianfit