将元组作为AnyObject传递给swift

时间:2014-07-26 11:51:10

标签: ios swift tuples onedrive

是否可以将Tuples作为参数传递给以AnyObject作为参数的函数?

我正在使用OneDrive SDK,它允许您传递声明为AnyObject的userState参数。该函数声明如下:

func getWithPath(path:String, userState: AnyObject)

我想调用这个方法传入一个元组,因为我想传递多个不同类型的值,如下所示:

getWithPath("me/skydrive", (name: "temp", callingDate: Date(), randomValue: 2345))

是否可以将Tuple作为参数传递给AnyObject?

2 个答案:

答案 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]