Görünümlerin kullanımı kolaydır, yeniden kullanımı kolaydır ve kolayca oluşturulabilir. Bunları nasıl kullanacağınızı biliyorsunuz, nasıl kullanacağımı biliyorum, bu yüzden bu onların nasıl kullanılacağına dair bir makale olmayacak, daha çok View protokolünün nasıl çalıştığı üzerine olacak. Bunu yaparken, görünümler yerine dizeler oluşturmak için kullanılabilecek basit bir Metin protokolünün nasıl yapılacağını göstereceğim.
Yaptığımız şey basit olacak. Çevre veya tercihler gibi özelliklerle ilgilenmeyeceğiz, durum bilgisi veya değiştiricilerle de ilgilenmeyeceğiz. Hedefimiz, görünüm benzeri sözdizimi ile dizeler oluşturmamızı sağlayan bazı yardımcı yapılara sahip bir protokoldür.
Protokolün nasıl çalıştığına dair çok fazla belge veya tartışma yok. Bazıları gereksinimlerini sizin için yüksek sesle okuyacaktır: "View'e uyan bir nesnenin, aynı zamanda View'e de uyan ilişkili bir Gövde tipi olması gerekir. Buna ek olarak, Body türünde bir nesne döndüren bir örnek özelliği bildirmelidir. " Ancak okuma yazma bilmiyorsanız bu özellikle yararlı değildir, bu durumda tamamen yararsızdır.
Görünüm, basitçe bir işlevdir. Girdileri kabul eder ve sıradan bir işlev gibi çıktılar verir. Görünümler içindeki görünümler bir işlev ağacı oluşturur ve her görünüm, alt ağacının köküdür.
Tamam, ama bu bizim protokolümüz için ne anlama geliyor? Bu, onu her bir metnin bir dizi dizgiyi kabul edeceği ve döndüreceği şekilde tasarlayabileceğimiz anlamına gelir. Daha sonra, tüm metin ağacını yapraktan köke geçerek ve sonucu birleştirerek tek bir dizeye indirgeyebiliriz.
1. Metin. İlk önce protokolü yapacağız. Tanıdık gelmeli. Normalde Xcode tarafından gizlenen üç işlevden yalnızca ikisine ihtiyacımız olacak. Text / makeText (inputs :) bizim girdi-çıktı fonksiyonumuzdur. Text / makeTextList (), metnin alt ağacında gezinmek için kullanılacaktır. Varsayılan uygulamamız, özyinelemeyi oluşturan body özelliğini kullanır.
2. AnyText. Metnin ilişkili bir türü vardır, bu da farklı tür metinleri tutan bir dizi oluşturmak için tür silme kullanmamız gerektiği anlamına gelir. Sorun değil, Swift'de tür silme işlemi kolaydır.
3. Asla. Görünüşe göre metnin alt ağacının her zaman gövde özelliği ile ifade edilmesini istemiyoruz ve her metnin bir alt ağacı olmayacak, bu yüzden Asla'yı genişletiyor ve Metne uygun hale getiriyoruz. Bunu yapmak zorunda değiliz ama Asla boş bir enum değildir ve asla somutlaştırılamaz, dolayısıyla amacımızı netleştirir.
4. Düz Metin. Artık hiçliği temsil edebildiğimize göre, bir şeyi temsil edecek bir şey yapmanın zamanı geldi… niyeti. Bu ağacımızdaki yaprak olacak.
5. TupleText. Daha sonra birçok metni tek metinler halinde gruplamamız gerekecek. Sihire ihtiyacımız olmadığını söyledim, bu yüzden birçok TupleText [#] yapmamız gerekecek. Başka alternatifler de var ama basit tutalım.
6. TextBuilder. Kodumuzu okunabilir hale getirecek olan budur. Her satırı ayrı bir ifade olarak değerlendirir ve birden çok ifadeyi tek bir nesnede birleştirir. #SwiftResultBuilders
7. Grup. Bazen TextBuilder tarafından belirlenen sınırlamaların üstesinden gelmeniz gerekir ve bunu yapmanın en kolay yolu, varsayılan davranışı benimseyen bir grup nesnesidir.
8. Her İçin. Diğer durumlarda, tekrardan kaçınmak isteyebilirsiniz. Bu yüzden bunun için bir metin hazırlıyoruz. Bir sekansı ve bir kapanışı saklar, ardından isteğe bağlı olarak alt ağacı oluşturur.
9. Biçimlendirilmiş. Şimdi girdilerini dönüştüren bir metin oluşturacağız. Görmek! Size bu makalenin işlevler ve işlev ağaçları hakkında olduğunu söylemiştim.
10. Katıldı. Ayrıca çıktıların sayısını da değiştirebilmeliyiz. Tüm girdileri tek bir dizede birleştiren bir metin oluşturalım.
11. Metin / dizge oluştur (). Son olarak, ağacı geçeceğiz. Özyineleme ile ağacın aşağısına ve ağacın yukarısına. Daha kolay olamazdı.
Gördün mü, o kadar da zor değildi. Sihir yok. Kapalı kaynak sır yok. Zeka yok. Sadece basit bir Swift kodu.
Umarım bu temel örnek SwiftUI'nin View protokolünü anlamanıza yardımcı olmuştur.
Şimdi çalışıp çalışmadığını görelim.
İşte kodun bir hatırlatıcısı.
Makale kodu: https://github.com/oscbys/Article-SwiftUI-s-View-protocol
Bilinç nedir? Yüzyıllardır filozofların ve bilim adamlarının kafasını karıştıran bir sorudur. Bazıları bunun bedenlerimizden bağımsız olarak gerçekten anlayamadığımız geçici bir şey olduğunu söylüyor.
Yıllık ortalama 154 bin dolar maaş ve istikrarlı iş büyümesi ile şimdi blok zinciri geliştirmeyi öğrenmek için ideal zaman. Blok zinciri teknolojilerini oluşturmak ve geliştirmek için blok zinciri geliştiricileri, bilgisayar ağı, kriptografi, algoritmalar ve veri yapıları dahil olmak üzere çeşitli beceriler kullanır.
Abha'da spor aktiviteleri için bir deneyim tasarlayalım! Programın neredeyse yarısına geldik ve 3. proje zamanı geldi! Yalan söylemeyeceğim bu proje şimdiye kadar yaptığım en bunaltıcı, stresli ama eğlenceli proje olabilir. Başlamak için, güzel Abha şehrinde spor aktiviteleri için bir deneyim tasarlamak olan meydan okumamızla tanıştık.
Jesenko ve benim 20 yıllık evlilik yolculuğumuza nasıl başladığımıza dair başlangıç hikayemizi pek kimse bilmiyor. Bazılarının, ilk dairemizi birlikte doldurmak için yeterince para kazanmamanın çok erken zamanlarıyla ilgili olabileceğinden eminim.