.filter命令不适用于swift中的my.plist

.filter命令不适用于swift中的my.plist,swift,Swift,因此,我下面的代码用于尝试从我创建的字典数组中筛选出名称。在前面的问题中我得到了很多建议,但现在我面临一个新问题。我实际上无法实现.filter函数。我已经尝试了很多不同的方法,但我只剩下下面的代码。任何关于我可能遗漏的内容的建议都将不胜感激!我收到错误消息,cardArray没有名为“filter”的成员 override func viewDidLoad() { super.viewDidLoad() let path = NSBundle.mainBundle().pat

因此,我下面的代码用于尝试从我创建的字典数组中筛选出名称。在前面的问题中我得到了很多建议,但现在我面临一个新问题。我实际上无法实现.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"]!}
    }
}
override func viewDidLoad(){
super.viewDidLoad()
让path=NSBundle.mainBundle().pathForResource(“CardList”,类型为“plist”)
将plistDict=NSDictionary(contentsOfFile:“/path”)设为!Dictionary
如果让cardArray:AnyObject=plistDict[“数组”]{
var names=cardArray.filter{$0[“Class”]==1}.map{$0[“name”!}
}
}
在这一行代码中:

if let cardArray: AnyObject = plistDict["array"] {
您正在将
plistDict[“array”]
的内容存储到
AnyObject
类型的变量中。但是
AnyObject
不是数组,尽管它指向的实例实际上可以是数组

您应该尝试向下转换到一个数组-例如,如果它应该是一个字符串数组:

if let cardArray = plistDict["array"] as? [String] {
    ...
}

所有的石膏都有点痛,我用一个虚拟物体测试了一下

contentsOfFile
的参数必须是
path
而不是
“/path”


你能解释一下“不起作用”到底是什么意思吗?我会尝试一下的,谢谢。如果这解决了我的问题,或者让我走上了我需要走的道路,我会随时通知你。谢谢瓦迪安!!我就知道你会知道的!我仍在学习斯威夫特,所以所有这些打字都很痛苦。我真的很感激你对这些东西的了解!我在这段代码中遇到的唯一问题是,它意外地找到了nil.insert
println()
行,以找出其中的位置,实际上只能出现在第2行和第4行。我不知道为什么我还没有考虑做这些事情。自学这些编程语言很有趣:P.意外的find nil错误发生在实际的过滤行中,而不是之前。当我只打印阵列时,一切正常。它似乎很难识别int?我可能会尝试将整个数据库转换为字符串,但这可能需要很长时间,因为我有586个以上的对象。
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)
  }
}
…
   if let cardArray = plistDict["array"] as? Array<[String:String]> {
     let names = cardArray.filter {$0["Class"]! == "1"}.map {$0["name"]!}
   }