Flex
İçerisinde Sonuç Nesneleri Üzerinde Doğru Döngü Oluşturma
Apache Flex ile çalışırken, geliştiriciler sıklıkla bir web hizmetinden alınan verileri döngüye alma ihtiyacıyla karşılaşırlar. Yaygın bir senaryo, bir HTTPService
çağrısı ile dönen XML verilerini yönetmektir. Ancak, pek çok kişi, yanıtın değişken sayıda satır içerdiği durumlarda sorunlarla karşılaşmaktadır. Bu blog yazısında, bu XML sonuç nesneleri üzerinde hata almadan nasıl doğru bir şekilde döngü oluşturulacağını inceleyeceğiz.
Problem: XML Verileri Üzerinde Döngü Oluşturma
Tipik bir durumda, bir HTTPService
çağrısı yapabilir ve aşağıdaki gibi yapılandırılmış XML verisini alabilirsiniz:
<DataTable>
<Row>
<text>foo</text>
</Row>
<Row>
<text>bar</text>
</Row>
</DataTable>
Bu verileri işleme alırken, birçok geliştirici aşağıdaki kodu kullanarak “Row” düğümleri üzerinde döngü oluşturmak için bir for döngüsü kullanır:
for (var i:int = 0; i < event.result.DataTable.Row.length; i++) {
if (event.result.DataTable.Row[i].text == "foo")
mx.controls.Alert.show('foo bulundu!');
}
Birden fazla “Row” düğümü mevcut olduğunda bu kod doğru çalışmasına rağmen, sadece bir “Row” düğümü olduğunda bozulur çünkü length
, dönen XMLList
nesnesinin bir özelliği değildir. Böyle durumlarda, beklenmeyen hatalara sebep olabilir.
Çözüm: for each
Döngüsünü Kullanma
XMLList Uzunluğunu Anlamak
Sorunu çözmenin anahtarı, length
‘in bir XMLList
metodunu olduğunu tanımaktır, bir özellik değil. Dolayısıyla, satır sayısını almak için doğru yol:
event.result.DataTable.Row.length();
Ancak, uzunluğu doğrudan sorgulamak hala kafa karışıklığına yol açabilir, özellikle bunu gözden kaçıran veya tutarsız XML yanıtları alan geliştiriciler için.
En İyi Uygulama: for each
Döngüsünü Kullanma
Kodun açıklığını artırmak ve potansiyel hatalardan kaçınmak için XMLList
ile çalışırken for each
döngüsünü kullanmak en iyisidir. Bu yöntem, XML düğümleri üzerinde döngü oluşturmak için daha güvenli ve daha doğal bir yoldur:
for each (var node:XML in event.result.DataTable.Row) {
if (node.text == "foo") {
mx.controls.Alert.show('foo bulundu!');
}
}
for each
Döngüsünün Avantajları:
- Okunabilirlik: Kod daha basit ve okunması daha kolaydır.
- Dayanıklılık: Uzunluklara erişimle ilgili sorunları aşarak hata yapma olasılığını azaltır.
- Esneklik: Çocuk düğümlerinin değişken sayılarıyla sorunsuz çalışır.
Sonuç
Flash ve Apache Flex’te XML verilerini yönetmek, doğru yapılmadığında karmaşık olabilir. HTTPService
çağrılarından XMLList
sonuçları üzerinde döngü oluşturmak için bir for each
döngüsü kullanarak, yalnızca tekil çocuk düğümleriyle ilgili hataları önlemekle kalmaz, aynı zamanda daha temiz ve sürdürülebilir bir kod oluşturursunuz.
Bu uygulamayı hayata geçirmek, kod kalitenizi artırır ve Flex uygulamalarınızda XML verileriyle çalışırken çalışma zamanı sorunları olasılığını azaltır.