Ответ 1
Кортежи не являются объектами, поэтому это не сработает. Однако, если вы измените AnyObject
на Any
, вы можете передать объекты, а также кортежи:
func getWithPath(path:String, userState: Any)
Можно ли передавать Tuples в качестве параметров для функций, которые принимают AnyObject в качестве параметра?
Я использую SDK OneDrive, который позволяет вам передать параметр UserState, который объявлен как AnyObject. Функция объявляется следующим образом:
func getWithPath(path:String, userState: AnyObject)
Я хотел бы назвать этот метод, проходящий в Tuple, так как я хочу передать несколько значений с разными типами:
getWithPath("me/skydrive", (name: "temp", callingDate: Date(), randomValue: 2345))
Можно ли передать Tuple в качестве параметра, где ожидается AnyObject?
Кортежи не являются объектами, поэтому это не сработает. Однако, если вы измените AnyObject
на Any
, вы можете передать объекты, а также кортежи:
func getWithPath(path:String, userState: Any)
Из быстрого 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
, поскольку для tuple не сопоставляется объект objective c
. Вместо этого используйте Dictionary
для передачи в качестве параметра
Вместо этого используйте словарь
var abc:[String:AnyObject] = ["abc":123,"pqr":"not"]
вы можете использовать AnyObject for thar
Используйте это для своего словаря
let userState:[String:AnyObject] = ["name": "temp", "callingDate": NSDate(), "randomValue": 2345]