【发布时间】:2016-01-30 21:34:56
【问题描述】:
在 Swift 2 中,我收到一个错误:
无法将
'[String:AnyObject]'类型的值转换为预期的参数类型'@noescape ([String:AnyObject])'throws -> Bool"
//today = NSDate()
//array : [[String:AnyObject]]
// I use if let because of we might now get element in the array matching our condition
if let elementOfArray = array.filter({$0["id"] as? Int == anotherDictionary["matchID"] as? Int && ($0["nextFireDate"] as? NSDate)?.compare(today) == NSComparisonResult.OrderedAscending}).first {
let index = array.indexOf(elementOfArray) // error here
}
我做错了什么?我无法理解。 :/
我的目标是找到该项目的索引,我认为我打开了替代解决方案,但当然这是首选,因为我认为这是“正确的方式”。
【问题讨论】:
-
代替
...的实际代码是什么样的?我不知道这是否重要,但如果有人可以将您所获得的内容复制并粘贴到操场上以查看确切的错误,这可能会有所帮助。 -
@nhgrif 我认为这没关系,简而言之,这段代码通过字典键/值匹配找到了恰好一行。
-
这可能无关紧要,但 Swift 允许我们将这么多压缩成这么少。问题应该清楚地说明确切的问题是什么。我自己在操场上玩这个。我们实际上可以删除整个
if let。你真的应该把这个问题简化为只有indexOf调用和产生的实际错误是这里的问题。 -
@nhgrif,好的,这不是秘密,几秒钟后看到更新。
标签: arrays swift filter casting indexof