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
元组不是对象,所以这不起作用.但是,如果更改AnyObject为Any,则可以传递对象和元组:
func getWithPath(path:String, userState: Any)
Run Code Online (Sandbox Code Playgroud)
cod*_*ter 11
来自swift docs
只要与Objective-C兼容,您就可以访问使用@objc属性标记的类或协议中的任何内容.这不包括仅限Swift的功能,例如此处列出的功能:7个泛型
Run Code Online (Sandbox Code Playgroud)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中使用.
所以你不能使用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)