Swift ve çoğu programlama dilinde, sıralı bir öğe dizisine
Array. SwiftUI'de genellikle bir dizi öğeyi bir
List. An
Arraybir model yapısıdır. A
Listbir görünüm yapısıdır.
A'nın
Listher bir öğeyi benzersiz şekilde tanımlaması gerekir. Başka bir deyişle, bir in ürün ihtiyacı
Arrayolması
Identifiable. Örneğin, onları benzersiz bir adla veya benzersiz bir numarayla tanımlayabiliriz. Ardından,
Listekstra kodlama çalışması olmadan öğelerin konumlarını kontrol edebilir ve animasyonları otomatik olarak gerçekleştirebilir.
Önceki Öğretici 12'de , listemizdeki her haber hücresinde bir makale görüntülemiştik. Ancak her hücre aynı makaleyi gösterdi.
Bu Eğitimin 13, biz bir tanesini gösterir
NewsCellher benzersiz için
Articlebir in
Array. Makaleleri yapacağız,
Identifiableböylece daha sonra bir
List.
Son öğreticinin kaldığı yerden devam edeceğiz. İdeal olarak, bu serideki önceki eğitimleri tamamlamışsınızdır . Veya hazırlanan projeyi indirebilirsiniz , bu öğreticiyi başlatmaya hazırsınız.
İlk olarak, daha önce oluşturduğumuz sahte makaleleri kullanarak bir makale dizisi oluşturalım.
👉
Article+Mock.swiftDaha önceki bir öğreticide oluşturduğumuz dosyayı açın . Bu dosyanın sonuna boş bir satır ve ardından şu kodu ekleyin:
Kodunuz daha sonra şöyle görünmelidir:
ℹ️ İşte bu yeni koda hızlı bir genel bakış:
Selfiçerisi
extension Articleaçıkça yazmakla aynıdır
Article.
extension Article, bir makale dizisi olan ile
[Self]aynı anlama gelir
[Article]. Bir türün etrafındaki köşeli parantezler (
[Article]veya gibi
[Self]) o türden bir dizi anlamına gelir. Bir dizi, sırayla yalnızca bir dizi öğedir. Örneğin, bir dizi meyve olabilir
let fruits: [Fruit] = [.apple, .orange, .banana].
mocksSahte makaleler dizisi için değişken adını seçtik . Diziler genellikle çoğul olarak adlandırılır.
mocksdizisi olmaya
[.blockChain, .airBlock]zaten yukarıda tanımlanan iki örneğini içerir.
Şimdi
mocksmakale dizimizdeki bilgileri bir
List.
👉
ContentView.swift, içinde, seçmek
List(...)için şablona tıklayın
0...<5.
👉 ile değiştirin
Article.mocks. Siz yazarken, Xcode otomatik tamamlamayı isteyecektir, böylece her şeyi yazmanız gerekmez.
👁 Gördüğünüz gibi, Xcode bir hata açılır penceresi gösteriyor.
👉 Hata açıklamasındaki tüm kelimeleri ortaya çıkarmak için hata açılır penceresindeki kırmızı dur işareti simgesine tıklayın.
Xcode, "Tanımlanabilir" ile uyumlu olmadığı için
Listbir dizi makaleyi kabul etmeyeceğini söylüyor
Article. Ama bu ne anlama geliyor?
Bu
List,
mocksdizideki diğer makalelerden farklı olarak her makaleyi tanımlamanın bir yolunun olması gerektiği anlamına gelir . Bunu yapmanın en basit yolu, her makaleye benzersiz bir tanımlayıcı eklemektir. Benzersiz bir isim dizisi olabilir, ancak biz sadece onları numaralandıracağız.
👉 Dosyayı açın
Article.swift(sol bölmedeki Dosya gezgininde seçerek (.
👉Sonra
struct Articleekleyin
: Identifiable. Bu, Xcode'a protokole
Article"uyma" sözü verdiğimizi söyler
Identifiable.
👁 Xcode, bundan şikayet ederek bizi sözümüzde tutar
Type 'Article' does not conform to protocol 'Identifiable'. Bu dur işaretinin önceki hatalar gibi bir çarpı değil, bir nokta içerdiğini unutmayın.
👉 Noktayı içeren dur işaretine tıklayın.
👁 Hata açılır penceresi genişler ve
Fixekleyerek hatayı sunar
protocol stubs.
👉 Açılır penceredeki düğmeye tıklayın
Fix.
👁 Xcode, hatayı düzeltmek için yer tutucu kodu ekler.
Biz kimliği için basit tamsayılar (tam sayılar) kullanacaktır yana 👉 yerini
ObjectIdentifierile
Int.
👉 değiştirmemiz (değişir) olmayacağından
idher makalenin kez atanan, değişim
variçin
let.
👉 Boş satırı silin.
👉 Uygulamayı oluşturun (
Productsmenüde).
👁 Şimdi Xcode dosyadaki hatalardan şikayet ediyor
Article+Mock.swift.
👉
Article+Mock.swiftHata açılır menüsünde dosyayı seçerek dosyaya geçin .
👁 Xcode aynı hatanın iki örneğini gösteriyor: Her sahte makalede,
ideklediğimiz yeni parametre (özellik) için bir bağımsız değişken (değer) eksik .
👉 Noktayı içeren dur işaretine dokunun. Popover hata detayında
Fixbutona tıklayın.
👁 Xcode
id, beklenen
Intdeğer için bir yer tutucuyla birlikte eksik parametreyi ekler .
👉 Yer
Inttutucuyu değerle değiştirin
1.
ReturnParametreleri kendi satırlarına ayırmak için virgülden sonra tıklayın ve tıklayın .
👉 Benzer şekilde, ikinci örnekte
id: 2.
👉 Uygulamayı yeniden oluşturun ve artık hata olmadığını kontrol edin.
👉 Dosyamızı
ContentView.swiftiçeren dosyaya geçin
List. Gerekirse,
Resumeönizleme.
👉 Ön izlemenin
Live Previewsol üst köşesindeki düğmeye tıklayın .
👉 Önizleme çalışırken, Haber sahnesini yukarı ve aşağı sürükleyerek kaydırın.
👁 Listede artık sadece iki haber hücresinin görüntülendiğini görmelisiniz. Önceki şablon kodunun altı hücre gösterdiğini hatırlayın.
List(Article.mocks) Her öğe için bir hücre / satır içeren bir listesini yapmak için SwiftUI söyler
Article'ın
mockssadece iki dizinin,.
Ancak önizleme, yalnızca
.airBlockmakaleyle birlikte tüm haber hücrelerini görüntülemeye devam ediyor . Bu mantıklı, çünkü içindeki
NewsCellkodun
Listargümanı var
.airBlock). Bu statik (değişmeyen) örneği
item,
Listsağladığı her biri ile değiştirmemiz gerekiyor .
👉 olarak
NewsCell(…),yerine
.airBlockile
item.
👁 Önizleme artık farklı makalelerle doldurulmuş iki haber hücresini gösteriyor. Kontrol etmek için yukarı ve aşağı kaydırabilirsiniz.
Değişken adı
itemoldukça geneldir. Kodumuz daha karmaşık hale geldikçe, değişkenleri tanımlayıcı olarak adlandırmak giderek daha önemli hale geliyor.
itemBuradaki değişkeni be olarak yeniden adlandıralım
article. İki oluşumu değiştirmek için basitçe manuel olarak yazabiliriz, ancak bu, Xcode'un yeniden düzenleme araçlarından birini kullanmak için iyi bir zamandır.
👉 Kontrol kodundaki
itemoluşumlardan birine tıklayın
List.
👉 Açılır menüde öğesini seçin
Refactor > Rename....
👁 Xcode etkilenecek koda odaklanır ve
item.
👉
itemMetin hala seçiliyken, ile değiştirmek için yazın
article. Siz yazarken her iki örneğin de değiştiğini görmelisiniz.
👉
Renamebutonuna tıklayın.
👉 Yeni hata olmadığını kontrol etmek için oluşturun.
Daha önce yaptığınız gibi:
Commitgelen
Source Controlmenü.
Article: Identifiable and mocks
Commitbutonuna tıklayın.
Tebrikler! Haber makalelerinin listesi artık görsel olarak tamamlandı. Şu anda mevcut olan tüm makaleleri gösteriyor.
Daha sonra, Eğitim 13'te, şimdiye kadar öğrendiğiniz tüm araçları kullanarak Ürünler sahnesini oluşturacağız.
Öğretici 13, 29 Haziran Salı günü GMT saatiyle 20.00'de (30 Haziran Çarşamba, saat 06:00 AEST) yayınlanacaktır.
İçindekiler tablosunda yaklaşan eğitimlere bakın . Daha fazla makaleden haberdar olmak için yazarı takip edin.
💬 Herhangi bir sorunuz veya yorumunuz varsa, lütfen aşağıya bir yanıt ekleyin.
Bu seri, Next Level Swift aracılığıyla yayınlandı . Güncel kalmak için abone olun ve bu serinin yeni Eğitimini asla kaçırmayın!
Her zaman yetenekli ve tutkulu Swift geliştiricileri arıyoruz! Yazarlar bölümümüze göz atın ve bilginizi Next Level Swift Topluluğu ile nasıl paylaşabileceğinizi öğrenin!
Kod incelemesinin (CR) basit amacı, incelemeden sonra kodun daha iyi durumda olmasını sağlamaktır. Verimli CR'ler aracılığıyla, kodu üretime dağıtma sürecini engellemeden olası sorunları yakalamak istiyoruz.
İncil zamanlarından tarih, İncil'deki hikayeler nedeniyle bu konudaki en ilginç olarak kabul edilir. Bazıları için İncil'de sunulan kutsal yazılar masaldır, ancak Hıristiyanlık için son 2.000 yıldır milyarların yaşam tarzlarına öncülük etmektedirler.
Astronomi ve uzay araştırmaları, evrendeki amacımız hakkında yeni bir bakış açısı sunabilir. Hayatın anlamından daha temel bir gizem yoktur.
Daha fazlasını başarmak, daha fazlasını elde etmek ve daha fazlasını üretmek için hayatın çok hassas olan bazı alanlarından kısıyoruz. Girişimci, ekip lideri veya CEO olarak bu yemi yutmaktan kaçınmanız gerekir.
Azure Dayanıklı İşlevleri, Azure İşlevlerinin bir uzantısıdır ve bu nedenle, durum yönetimi, yeniden deneme etkinlikleri ve devam etmekte olan iş akışlarını kolayca iptal edebilme gibi standart bir işleve göre ek avantajlara sahiptir. Ancak, onlarla çalışmaya alışkın olmayan biri için, yakalandığım birkaç senaryo vardı.
Kristen Stewart bir keresinde 'Pamuk Prenses' rol arkadaşı Chris Hemsworth'a sert bir yumruk attı ve bu, oyuncunun geleceğini görmediği bir saldırıydı.
GQ Magazine ile yaptığı bir röportajda BTS'den Jin, BTS ve Coldplay'in şarkısı 'My Universe'nin bir bölümünün 'son bölümü yapmadığını' açıkladı.
Bir röportaj sırasında Kane Brown, Elvis Presley'in "Hound Dog" ve "Blue Christmas" şarkılarının defalarca şarkılarını nasıl etkilediğini tartıştı.
'Çığlık', bazı yeni yönler veren kanlı bir dönüş sağlar, ancak Ghostface'in en yeni öldürme çılgınlığı olması gerektiği kadar derin kesmez.
Her hafta güncellenen mini bulmacamız, en sevdiğimiz HowStuffWorks okumalarımızı zeki ipuçlarıyla birleştiriyor!
Doğru deterjanı seçme konusunda endişelenmenize gerek kalmadan çamaşır yıkamak yeterince kötü. Peki en iyisi hangisi? Yoksa önemli mi?
Kentucky kırsalındaki Fugates ve Combs aileleri, genetik piyangoyu kaybettiler ve her ikisi de, evlenirken tenlerinin mavi görünmesine neden olan nadir bir çekinik özelliği paylaştılar. Bunun nedeni neydi? Ve ailelere ne oldu?
İki babasız erkek civciv, California akbabasını yok olmaktan kurtarmak için bir programda yetiştiriliyor. Böyle 'bakire' doğumlar nasıl mümkün olabilir?
Vanderpump Rules yıldızı Katie Maloney-Schwartz, Perşembe günü Instagram'da yaptığı dürüst ve içten bir gönderiyle kendini sevme yolculuğunda kaydettiği ilerlemeyi anlattı.
Jessica Alba, kendisini ve çocuklarını Dolly ve Lucy adlı iki köpekle sarılıp oynarken gösteren keyifli bir videoyu Instagram hesabından paylaştı.
Geçen hafta sonu bir Porto Riko tatili sırasında nişanlanan Megan Fox ve Makineli Tüfek Kelly'den bir kaynak, "İlk görüşte aşk durumuydu" diyor.
Polise göre Devonne Marsh'ın kimliği belirlenemeyen kız arkadaşını çakmak gazıyla kaplayarak alevleri tutuşturduğu iddia edildi.