Если вы используете Any
вместо AnyObject
вы можете передать любой тип, так также: Структуры
class func countOfItemsInArray(array: [Any]?) -> Int
Это немного странно.
Я использовал эту функцию:
func countOfItemsInArray(array: [Any]?) -> Int {
return array != nil ? array!.count : 0
}
Заявленный два ваших Assignment
структур и поместить их в массив:
let structOne = Assignment(name: "1", dueDate: NSDate(), subject: "1")
let structTwo = Assignment(name: "2", dueDate: NSDate(), subject: "2")
let myArray: [Assignment] = [structOne, structTwo]
Но вот интересная часть.
При вызове println(countOfItemsInArray(myArray))
он выдает ошибку:
<stdin>:27:33: error: 'Assignment' is not identical to 'Any'
println(countOfItemsInArray(myArray))
^
<stdin>:17:26: note: in initialization of parameter 'array'
func countOfItemsInArray(array: [Any]?) -> Int {
^
Так я тестировал, если myArray
имеет типа [Any]
:
println(myArray is [Any])
, к которому скоро говорят:
<stdin>:25:17: error: 'Any' is not a subtype of 'Assignment'
println(myArray is [Any])
^
Но когда я изменяю аннотация типа myArray
до [Any]
работает:
let myArray: [Any] = [structOne, structTwo]
И когда просто передав буквальную функцию он работает, тоже:
countOfItemsInArray([structOne, structTwo])
Весь пример кода можно увидеть here.
Я получаю сообщение об ошибке, «„myStructType“не совпадает с 'Любые» – PopKernel
Не могли бы вы опубликовать код (или ссылку к нему)? –
Несомненно. Функция находится здесь: http://pastebin.com/cztjMbFW – PopKernel