import GameKit
class FactModel { // See, this is a class now.
let facts = [ "Test1", "test2", "Test3", "test4", "Test5", "test6", "test7", "Test8", "test9", "test10", "Test11", "test12", "test13", "Test14", "test15", "test16", "Test17", "test18" ]
var index = 0 // This is the property that will allow us to track what fact we are up to.
func getRandomFact() -> String { // No change to this method.
let randomNumber = GKRandomSource.sharedRandom().nextIntWithUpperBound(facts.count)
return facts[randomNumber]
}
func getNextFact() -> String {
let fact = facts[index] // We grab the fact before we increment the index.
if index < facts.count - 1 { // We make sure we did not give the last fact in the list.
index += 1 // We increment the index so the next fact is ready to go.
} else {
index = 0 // We wrap around to the first fact because we just gave the last one.
}
return fact
}
func getPreviousFact() -> String {
let fact = facts[index]
if index < facts.count - 1{
index -= 1
} else {
index = 0
}
return fact
}
}
let myFact = FactModel()
0
A
답변
-1
u는 먼저 색인 개미를 늘려서 사실을 검색해야합니다. 색인을 다음과 같이 설정하십시오.
func getPreviousFact() -> String {
if index > facts.count {
index -= 1
} else {
index = 0
}
let fact = facts[index]
return fact
}
0
코드를 한 줄씩 살펴 보겠습니다.
FactModel
이 초기화되면 index
은 0
입니다. 지금 당신은 getPreviousFact
전화 :
라인 1 : let fact = facts[index]
이제 fact
이 될 것입니다 최초의 사실, 즉 Test1을.
라인 2 : if index < facts.count - 1{
는 facts.count - 1
보다는 인덱스 적은 있습니까? 그것은! index
0이고 facts.count - 1
17
라인 3 : index -= 1
이제 index
가 -1!
따라서 다음 번에 getPreviousFact
으로 전화하면 let fact = facts[index]
이 실행됩니다. index
이 -1이 되었기 때문에 범위를 벗어났습니다! 당신이 index
은 0 그래서이 다를 수 있습니다 때 어떻게해야 무엇 언급하지 않았기 때문에
if index < facts.count && index > 0 {
index -= 1
} else {
index = facts.count - 1
}
이, 그냥 내 생각이다 : :(
나는 당신이 원하는 것은이 생각
관련 문제
- 1. 변수가 범위를 벗어날 때 JavaScript 가비지 수집
- 2. 범위를 벗어날 때 소멸자 호출 순서? (C++)
- 3. 객체가 범위를 벗어날 때 이벤트 핸들러는 어떻게됩니까?
- 4. 범위를 벗어날 때 자동 문자열 복구
- 5. 뮤텍스가 범위를 벗어날 때 잠금 해제됩니까?
- 6. C++ 참조가 범위를 벗어날 때 어떻게됩니까?
- 7. 동적 배열이 범위를 벗어날 때 메모리가 해제됩니까
- 8. 클래스 인스턴스가 범위를 벗어날 때 실행할 메소드?
- 9. GKSession 블루투스 장치가 범위를 벗어날 때 결정
- 10. 스위프트가
- 11. 범위를 벗어날 가능성이 있음 jquery
- 12. 키보드 포커스가 포커스 범위를 벗어날 때 LostFocus를 실행하는 방법이 있습니까?
- 13. .NET & COM - Class_Terminate/범위를 벗어날 때 개체 처분
- 14. GDB : 주소가 범위를 벗어날 때 $ eax에서 'passphrase'를 찾는 방법?
- 15. 오브젝트가 .NET에서 범위를 벗어날 때 코드를 실행할 수 있습니까?
- 16. 지역 변수 구조체가 범위를 벗어날 때 재설정되지 않는 이유는 무엇입니까?
- 17. 범위를 벗어날 때 힙의 데이터에 대한 포인터가 삭제 되었습니까?
- 18. 제어중인 스마트 포인터가 범위를 벗어날 때 스레드 객체가 파괴됩니까
- 19. 파생 클래스가 범위를 벗어날 때 기본 멤버가 소멸됩니까?
- 20. Julia는 핸들이 범위를 벗어날 때 자동으로 파일을 닫습니까?
- 21. 범위를 벗어난 색인에서 벗어날 수 없음
- 22. (C#)에서는 FileInfo 배열 범위를 벗어날 ... 예외가되지
- 23. anglejs 라우트 컨트롤러가 범위를 벗어날 때를 감지합니까?
- 24. IndexError : list index가 범위를 벗어납니다. 목록 색인이 범위를 벗어날 수 없을 때?
- 25. 스위프트가 달린 튜플
- 26. 난간에서 벗어날 때 문자가 회전합니다.
- 27. 값이 경계를 벗어날 때 메서드 시작
- 28. 최상위 수준으로 가져갈 때 모든 메뉴 항목을 확장하고 범위를 벗어날 때 다시 제거하는 방법?
- 29. 포인터가 범위를 벗어날 때를 찾기위한 프로그램 및 기술
- 30. 범위를 콜백 함수/바인딩에 전달
미세 선언! :-) –
오류가 발생했습니다. 1) 줄에서의 연속적인 선언은 ";" 2) 세미 콜론을 넣을 때 그것은 선언을 기대한다. –
@Dani 나는 대답을 편집했다. 그래도 오류가 발생하면 오류가 발생한 행을 알려주실 수 있습니까? – Sweeper