是否可以将Tuples作为参数传递给以AnyObject作为参数的函数?
我正在使用OneDrive SDK,它允许您传递声明为AnyObject的userState参数。该函数声明如下:
func getWithPath(path:String, userState: AnyObject)
我想调用这个方法传入一个元组,因为我想传递多个不同类型的值,如下所示:
getWithPath("me/skydrive", (name: "temp", callingDate: Date(), randomValue: 2345))
是否可以将Tuple作为参数传递给AnyObject?
答案 0 :(得分:13)
元组不是对象,所以这不起作用。但是,如果您将....type for žÄáÞÃé
更改为AnyObject
,则可以传递对象和元组:
Any
答案 1 :(得分:11)
来自swift docs
您可以访问类或协议中的任何内容 标有@objc属性,只要它兼容 Objective-C的。这不包括仅限Swift的功能,例如列出的功能 这里: 7 泛型
Tuples Enumerations defined in Swift Structures defined in Swift Top-level functions defined in Swift Global variables defined in Swift Typealiases defined in Swift Swift-style variadics Nested types Curried functions
例如,将泛型类型作为参数或方法的方法 返回一个元组将无法从Objective-C中使用。
因此,您不能将tuple
用于AnyObject
,因为元组没有匹配的objective c
对象。请使用Dictionary
作为参数传递
使用字典
var abc:[String:AnyObject] = ["abc":123,"pqr":"not"]
您可以使用AnyObject for thar
将此用于您的词典
let userState:[String:AnyObject] = ["name": "temp", "callingDate": NSDate(), "randomValue": 2345]