Hoşgeldin. Soru sormak veya cevaplamak için hemen üye ol.
0 oy
423 kez görüntülendi
ios development kategorisinde tarafından

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
tarafından

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 {
tarafından
Denedim ama o satırda şu hatayı veriyor. Sadece Swift 3'e çevirdim halbuki.
fatal error: Can't form Range with upperBound < lowerBound
tarafından
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.
tarafından
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
...