斯威夫特镜子yapısı

Objective-C ile kod yazarkençokkullandığım地幔diye birkütüphanevardı。 披风说说模型objelerimioluştururkenuyarlamak zorundakaldığım-initWithCoder:-encodeWithCoder:gibimetodlarıbenim yerime otomatikoluşturuyordu。 Bir ekstraözelliğiis objenintümdeğerlerinigüzelbirşekildebasacakşekilde-描述metodunu otomatikdoldurmasıydı。 Böylecekodda debug yaparken herhangi bir Mantle iletanımlanmışobjenindescription’ınıdebug console’abastığımda,tümobjenindetayınıgörebiliyordum:

Swift ile birlikte模型对象Mantlekullanmayıbıraktım,zira Mantle sadece NSObject olan objelerüzerindeçalışabiliyordu。 Kendi定制objelerimioluşturuyordum。 Swift’te bir objeninkarşılığınıbasmakiçin描述样式,名称和名称CustomStringConvertibleprotokolünüekleyerekyapıyordum。 Bu protokol mutlaka bir描述değerikoymayızorunlukılıyordu。 Burada ise tek tektümdeğerleriELLE basacakşekildeyazıyordum,bu daçokzamanalıyordu:

“ Bunun kolay bir yoluolmalı” diyedüşünüparaştırdımamabulamadım。 Belki deyanlışşekildearadımbilemiyorum。 达哈·索纳(Switzerland)Swift标准图书馆dokümantasyonunabakarken Mirror diye bir struct’arastladım:

镜像对象,枚举,元组,struct da ya koleksiyonu varsa hepsine isim vedeğerolarakulaşmanızısağlıyor。 房地产(物业)varsabunlarıliste olarakdeğerleriile birlikte konsola yazabiliyoruz。 镜像struct’ıdeğerolarak任何aldığındansadece classlardeğil,struct,tuple,enum,hatta fonksiyonlar ile胆Mirror’ıkullanabilirz。 Ayrıca镜像调试器和运动场调试器console’dagüvenlekullanabiliriz。

Öncebir objenin Mirror halinioluşturuyorum:

  let mirrorSelf = Mirror(反射:) 

Sonra bu mirrorSelf’in儿童değerineulaşıptümözelliğivedeğerlerialabiliyoruz。

 适用于镜子中的儿童Self.children { 
  print((child.label ??“”)+“:” +字符串(描述:child.value)) 
  } 

Dahaönceelleyazdığımmetodumu buşekildedeğiştiriyorum:

可以说调试了ileile调试器。

Bu medtodu isterseniz Generic’leri kullanaraktümmodellerinizeuyarlayın,姐姐protokol olaraktümmodellerinize ekleyin,大小kalmış。

镜像struct’ı,CustomReflectableprotokolüneuyantümtiplerialgılayabiliyor。 谭listeaşağıda。

斯威夫特标准图书馆(Swift Standard Library’deokuduğum),图书目录。 Bir sonrakiyazıdagörüşmeküzere。

NSIstanbulyayınınaaboneolmayı,bizi takip etmeyiunutmayın🙂

伊斯坦布尔
由NSIstanbul成员 medium.com 填写的出版物