• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

[Swift] Pętla działa, ale jest błąd

Object Storage Arubacloud
0 głosów
574 wizyt
pytanie zadane 29 stycznia 2017 w Android, Swift, Symbian przez Piotrinformatyk Początkujący (340 p.)

Witam :) Jestem dopiero początkujący w programowaniu. Niby działa pętla, ale wyskakuje błąd. Od czasu do czasu ten błąd mi się pojawia po otwarciu pliku playground niezależnie od tego czy kod jest dobry czy nie (zarówno mój jak i z książki i kursu), ale wystarczy ponownie uruchomić Xcode i błąd znika. Ktoś mógłby mi wytłumaczyć o co chodzi? Jak można się tego błędu pozbyć raz na zawsze? 

Błąd: error: Playground execution aborted: error: Execution was interrupted, reason: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0). The process has been left at the point where it was interrupted, use "thread return -x" to return to the state before expression evaluation.

Nie pomaga w tym przypadku ponowne uruchomienie Xcode.

Xcode: 8.2.1

System: macOS 10.12.1

3 odpowiedzi

+1 głos
odpowiedź 29 stycznia 2017 przez niezalogowany
wybrane 30 stycznia 2017 przez Piotrinformatyk
 
Najlepsza
Nie widzę kodu źródłowego, ale z tego co wydziubdziałeś na obrazku, to wygląda, że tablica ma 3 elementy, a odwołujesz się do 6. To jak się ma nie wywalać?
komentarz 30 stycznia 2017 przez Piotrinformatyk Początkujący (340 p.)

Nie wiem dlaczego tak nieostro wyszedł zrzut elementu ekranu. 

var toDoList = ["Wyrzucić śmieci", "Zapłacić rachunki", "Skreślić zrobione rzeczy"]

var i = 2
while i < 3 {
    
    print("Wartość pod indeksem \(i) ma wartość \(toDoList[i]).")
    i-=1
}

Nie było w opcji Swift, więc to wybrałem.

Co do 3 i 6 to nie ma znaczenia. Zawsze jest ten sam błąd.

1
komentarz 30 stycznia 2017 przez niezalogowany
Ta pętla jest nieskończona. Zaczynasz od 2 i zmniejszasz, a do pętli wchodzisz zawsze, gdy i < 3. A i < 3 jest zawsze, bo jest 2, 1, 0, -1, -2, -3, -4..... Aż się licznik przekręci.
komentarz 30 stycznia 2017 przez Piotrinformatyk Początkujący (340 p.)
Dzięki za zauważenie przeoczenia (próbowałem zrobić to samo innymi pętlami, z którymi dużo kombinowałem a na końcu while). Już działa :) Jak piszę:

var i = 2 for i in 2...0 { print("Wartość pod indeksem \(i) ma wartość \(toDoList[i]).") }

to dlaczego wyskakuje  błąd jak wyżej w temacie? Zawsze musi być od niższej liczby do wyższej?  Tak z ciekawości pytam bo gdyby działało to byłby krótszy kod, który robi to samo.
1
komentarz 30 stycznia 2017 przez niezalogowany
for index in stride(from: 5, to: 1, by: -1) {
    print(index)
}
//prints 5, 4, 3, 2

for index in stride(from: 5, through: 1, by: -1) {
    print(index)
}
//prints 5, 4, 3, 2, 1

 

 

http://stackoverflow.com/questions/24508592/how-to-iterate-for-loop-in-reverse-order-in-swift

komentarz 30 stycznia 2017 przez Piotrinformatyk Początkujący (340 p.)
Dzięki. Szukałem i jakoś nie mogłem tego znaleźć wczoraj. Szukałem przez bing i google, ale nic z stackoverflow w wynikach mi nie pokazywało, a nie patrzę tylko na pierwszej stronie.
komentarz 30 stycznia 2017 przez niezalogowany
ja wpisałem bodajże: for swift downto   Nie znam swifta w ogóle, więc nie opowiem za dużo więcej.
komentarz 30 stycznia 2017 przez Piotrinformatyk Początkujący (340 p.)
Ale i tak pomogłeś
+1 głos
odpowiedź 29 stycznia 2017 przez selfdrivers Użytkownik (870 p.)
Ta pętla chyba będzie się wykonywać w nieskończoność... ale możliwe że się mylę.
0 głosów
odpowiedź 23 sierpnia 2017 przez Kacper Wysocki Początkujący (340 p.)

Moim zdaniem lepiej używać pętli for do przeszukiwania tablicy :) wystarczy że zrobisz coś takiego:

var toDoList = ["Wyrzucić śmieci", "Zapłacić rachunki", "Skreślić zrobione rzeczy"]
for item in toDoList {
    print("Wartość to \(item)")  
}

 

Podobne pytania

+1 głos
1 odpowiedź 203 wizyt
0 głosów
3 odpowiedzi 1,754 wizyt
pytanie zadane 4 sierpnia 2016 w Android, Swift, Symbian przez KubenQPL Maniak (62,820 p.)

92,555 zapytań

141,403 odpowiedzi

319,557 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...