我正在使用 performSegueWithIdentifier:sender:
方法,我想通过 sender
参数传递几个参数。在 Objective-C 中,我使用 @{"myKey": myValue}
语法即时创建了一个 NSDictionary。
我在 Swift 中尝试了几种方法,但编译器总是给我这样的错误:'AnyObject?'没有名为 {'Element' 或 'Key'} 的成员
如何在 Swift 中重现预期的行为?谢谢!
编辑:这是我的代码:
self.stopCamera()
dispatch_async(dispatch_get_main_queue(), { () -> Void in
self.performSegueWithIdentifier("backCameraVCtoFrontCameraVC", sender: [("image", image), ("fitler", filter)])
})
最佳答案
您的语法正在创建一个元组数组:
[("image", image), ("fitler", filter)]
你需要:
["image": image, "filter": filter]
如评论中所述,filter
是自定义枚举 WDFilterType
。您不能将它放在 NSDictionary
中,因为 WDFilterType
不是 AnyObject
。解决办法是把rawValue
放到字典里,在另一端重构。
["image": image, "filter": filter.rawValue]
然后在接收端:
if let dict = sender as? NSDictionary {
let filter = WDFilterType(rawValue: (dict["filter"] as Int))
}
在这种情况下,过滤器将是一个可选的 (WDFilterType?
),必须展开。
关于ios - 使用自定义枚举作为值在 Swift 中创建字典 'on-the-fly',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27460028/