2016-07-23 5 views
-1

Я только что начал изучать Swift и наткнулся на функцию dynamicType, которая должна возвращать тип переменной в соответствии со своими значениями. Но для меня он возвращает только «(Metatype)» для всех переменных. Может ли кто-нибудь сказать мне, если это то, что он должен вернуть? Если это неверно, почему он работает неправильно. Я использую XCode версии 6.1.1.Что нужно для динамического перехода в Swift?

Это то, что я написал

var str = "Hello, playground" 

str.dynamicType 

Выход:

Hello, playground 

(Metatype) 
+6

Вы должны сначала обновить Xcode, который полностью устарел –

+0

Чтобы узнать тип объекта. обратитесь к этому [link] (http://stackoverflow.com/questions/24101450/how-do-you-find-out-the-type-of-an-object-in-swift) – Khundragpan

+0

Только _logs_ "(Метатип) "(в вашей очень примитивной версии Xcode/Swift), но это не то, что на самом деле это _is_. – matt

ответ

4
типа

метатип относится к типу любого типа, в том числе типов классов, структурных типов, типов перечисления и типов протоколов , Возможно, вы не сможете напечатать имя, потому что это не строка dataType. Цель dynamicType - использовать его для сравнения времени выполнения, как показано ниже.

if someInstance.dynamicType === SomeClass.self { 

Для получения дополнительной информации см. Следующую ссылку. Если вы действительно хотите напечатать имя своих пользовательских классов, создайте «class func printClassName()», как указано в ссылке.

https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Types.html