所以我的代码用于尝试过滤掉我创建的字典数组中的名称。我在之前的一个问题中得到了很多建议,但现在我遇到了一个新问题。我无法实际实现.filter函数。我已经尝试了许多不同的方法,但我留下了你在下面看到的代码。任何关于我可能遗失的建议都将不胜感激!我收到错误消息,表明cardArray没有名为' filter'的成员。
override func viewDidLoad() {
super.viewDidLoad()
let path = NSBundle.mainBundle().pathForResource("CardList", ofType: "plist")
let plistDict = NSDictionary(contentsOfFile: "/path") as! Dictionary<String,AnyObject>
if let cardArray: AnyObject = plistDict["array"]{
var names = cardArray.filter {$0["Class"] == 1} .map {$0["name"]!}
}
}
答案 0 :(得分:1)
所有演员阵容都有点痛苦,我用虚拟对象测试了它。
contentsOfFile
的论点必须是path
而不是"/path"
if let path = NSBundle.mainBundle().pathForResource("CardList", ofType: "plist") {
let plistDict = NSDictionary(contentsOfFile: path) as! Dictionary<String,AnyObject>
if let cardArray = plistDict["array"] as? [AnyObject] {
let names = cardArray.filter {$0["Class"] as! Int == 1}.map {$0["name"] as! String}
println(names)
}
}
编辑:
如果您只使用字符串值创建plist文件(以后可以转换字符串toInt()
,那么可以减少投射
…
if let cardArray = plistDict["array"] as? Array<[String:String]> {
let names = cardArray.filter {$0["Class"]! == "1"}.map {$0["name"]!}
}
答案 1 :(得分:0)
在这行代码中:
plistDict["array"]
您将AnyObject
的内容存储到AnyObject
类型的变量中。但是if let cardArray = plistDict["array"] as? [String] {
...
}
不是数组,尽管它指向的实例实际上可以是一个数组。
你应该尝试向下转换数组 - 例如,它应该是一个字符串数组:
response.writeHead(302, {Location: encodeURI(url)});