将元组作为AnyObject传递给swift

Sal*_*han 17 tuples ios onedrive swift

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

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

func getWithPath(path:String, userState: AnyObject)
Run Code Online (Sandbox Code Playgroud)

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

getWithPath("me/skydrive", (name: "temp", callingDate: Date(), randomValue: 2345))
Run Code Online (Sandbox Code Playgroud)

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

fre*_*tag 13

元组不是对象,所以这不起作用.但是,如果更改AnyObjectAny,则可以传递对象和元组:

func getWithPath(path:String, userState: Any)
Run Code Online (Sandbox Code Playgroud)


cod*_*ter 11

来自swift docs

只要与Objective-C兼容,您就可以访问使用@objc属性标记的类或协议中的任何内容.这不包括仅限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
Run Code Online (Sandbox Code Playgroud)

例如,一个将泛型类型作为参数或返回元组的方法将无法从Objective-C中使用.

所以你不能使用tuplefor AnyObject,objective c因为tuple 没有匹配的对象.而是使用Dictionary传递作为参数

请改用字典

var abc:[String:AnyObject] = ["abc":123,"pqr":"not"] 您可以使用 AnyObject for thar

用于你的字典

let userState:[String:AnyObject] = ["name": "temp", "callingDate": NSDate(), "randomValue": 2345]
Run Code Online (Sandbox Code Playgroud)