Hoşgeldin. Soru sormak veya cevaplamak için hemen üye ol.

Swift 3'teki C-Style for loop problemi

0 oy
32 kez görüntülendi
5, Ocak, 2017 ios development kategorisinde burhanaksendir tarafından soruldu

Yasin üstadım merhaba,
Uzun süredir fırsat bulamadım ama şimdi projemi güncellemek için oturunca tonlarca hata ile karşılaştım. Çalışan projede birkaç yenilik yapmayı planlarken, 3-4 gündür Swift 3 ile en baştan yeniden yapıyorum diyebilirim. Özellikle for loop kısmında resmen kitlendi benim kafa. Perfspektif 0  şu an :)

Şuradaki  gallery örneğini kullanmıştım. Ama özellikle şu kısımda hata alıyorum ve çözemiyorum:

//Bu çalışan eski hali

func loadVisiblePages() {

let firstPage = currentPage - 1

let lastPage = currentPage + 1

for var index = 0; index < firstPage; ++index {

purgePage(index)

}

for var index = firstPage; index <= lastPage; ++index {

loadPage(index)

}

for var index = lastPage+1; index < imageCount; ++index {

purgePage(index)

}

}

//Bu da çalışmayan hali :) Acaba yanlış mı çevirdim Swift 3'e ?

func loadVisiblePages() {

        let firstPage = currentPage - 1

        let lastPage = currentPage + 1        

        for index in 0 ..< firstPage {

            purgePage(page: index)

        }        

        for var index in firstPage..<lastPage {

            index += 1

            loadPage(page: index)            

        }

        for index in lastPage+1 ..< imageCount {

            purgePage(page: index)

        }
    }

1 cevap

0 oy
5, Ocak, 2017 yasin tarafından cevaplandı

doğru gibi gözüküyor for loop tanımları ama "in" den sonra aralar da boşluk kalmasın.
syntax hatası verebilir boşluklar.

şöyle yani;

for index in 0..<firstPage {
5, Ocak, 2017 burhanaksendir tarafından yorumlandı
Denedim ama o satırda şu hatayı veriyor. Sadece Swift 3'e çevirdim halbuki.
fatal error: Can't form Range with upperBound < lowerBound
5, Ocak, 2017 yasin tarafından yorumlandı
he ok. şimdi anlaşıldı.

problem for döngüsüne aldığın değerlerde.

değerler küçükten, büyüğe doğru olmalıdır.

yani şöyle olursa,

for index in 0..<-2 {

}

o yazdığın hatayı alırsın.


eğer for döngüsünde kullanacağın değerlerin ne olacağını kestiremiyorsan.
stride kullanmalısın. stride, for döngüsünde kullanacağın değerlerin uygunluğunu kontrol eder.

şöyleki;

for index in stride(from: 0, to: -2, by: 1) {
                
}

bu durumda döngü işleme alınmayacaktır.
hata da almazsın o zaman.
ama döngünü işleme alınmamsı program akışını nasıl etkiler orası başka bir soru işareti tabi.
5, Ocak, 2017 burhanaksendir tarafından yorumlandı
döngünün işleme alınmaması tamamen işi bozdu üstad. Belki vaktin olduğunda github üzerinde paylaştığım projeyi test edersen sorunu daha iyi anlatmış olabilirim. Saygılar
...