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