所以我试着让下面的代码在swift 3下工作,但无论我尝试什么,我只会导致新的错误。我似乎无法弄清楚如何将dataArray对象转换为将要传递的任何东西。 (原始开发人员没有输入它,并且它总是通过通知对象设置,使得跟踪它的实际数据类型向下...很难;最好我可以告诉它只是通过解析从服务器JSON生成的字典)
var dataArray:NSMutableArray = []
func foo(_ notification: Notification)
{
if let id = notification.object as? Int
{
for dataOut in dataArray where Int(dataOut["id"] as! Int) == id {
self.performSegue(withIdentifier: "fooSegue", sender: dataOut)
return;
}
}
}
尝试编译它会产生关于Type 'NSFastEnumerationIterator.Element' (aka 'Any') has no subscript members
的语法错误。
答案 0 :(得分:1)
dataArray
是NSMutableArray
类型的必要原因吗?如果我收到某种Array
对象,我断言它包含Dictionary
类型的元素,我会执行以下操作:
if let id = id as? Int,
let data = dataArray as NSArray as? [[String:Any]]
{
for element in data where Int(element["id"] as! Int) == id
{
self.performSegue(withIdentifier: "fooSegue", sender: element)
return
}
}
修改dataArray
从NSMutableArray
到NSArray
到[[String:Any]]
和下标element
而不是data
。