2015-08-19 3 views
1

компании Apple изменила Swift отражения в XCode 7 беты 5. Функции глобального отражения() нет, и вы должны будете сделать это:Отражения Swift 2,0 XCode 7 беты 5

let mirror = Mirror(reflecting: object) 

Это дает более или менее той же информации в лучшем виде (не более .1 og .2 для имени свойства и значения). Но я не могу найти способ исследовать, является ли зеркальный элемент экземпляром класса. Старшее выполнение можно проверить следующее:

reflectedProperty.1.objectIdentifier != nil || reflectedProperty.1.count > 0 

Но идентификатор объекта, кажется, нет, а счетчик всегда 2 независимо от типа.

Помогите кому-нибудь?

ответ

2

Хорошо, поэтому я нашел обходное решение. Я выполнял итерацию над mirror.children.enumerate(), которая, казалось, создавала все свойства типа String. Вместо этого я выкопал предварительную документацию Apple и прочитал, что может быть хорошей идеей «обновить» детей до, например, AnyRandomAccessCollection. Это позволило полагаться на подсчет объектов детей, чтобы определить, является ли это объектом (после тестирования, является ли это массивом)

В настоящее время у меня есть действующий класс Swift для JSON Serializer, работающий здесь, на этом основании, если вы заинтересованы в коде: https://gist.github.com/peheje/cc3618253d4f38ea4885

1

Я не уверен, если вы ищете, но выход на следующее «Класс»

mirror.displayStyle 
Смежные вопросы