Henry Li
Henry Li

Reputation: 174

Incrementing Array Element By One In Swift

I am Currently working on a swift project in XCode, and I've encountered an issue where I cannot increment an array's one element by through various endeavours.

My ViewController.Swift

import UIKit

class FailureViewController: UIViewController {

    @IBOutlet weak var failFactLabel: UILabel!

    let failFact = Failure()

    override func viewDidLoad() {
        super.viewDidLoad()

        failFactLabel.text = failFact.failArray[0]
    }

   @IBAction func showFunFact() {   
        //this is where the issue is
    }
}

For the function showFunFact I have previously tried

for var x = 0; x < failArray.cout; x++ {
    failFactLabel.text = failFact.failArray[x]
}

but encountered the error: "Use of Unresolved Identifier".
Putting this aside, I decided to use

for var x = 0; x < 10; {
       x+=1
} 

Although this does not generate an error however, I see it stops at the first element in my array. I tried +=5 and it displays the 5th element in my array once, I believe this code runs through once. I need it to be a consistently working piece so it continuously displays the next element, I am stumped because this should theoretically work since it is called a "Loop" Any help or suggestion is Appreciated!

Objective Redefined: I am trying to show one fact at a time, before this I have used a random function to generate a random fact every time however things tend to get repetitive and therefore I decided to start on the initial array index is 0 and grab the next fact (next element in array) every time the button is pressed (Thanks to Luk's Question)

Upvotes: 2

Views: 3189

Answers (1)

luk2302
luk2302

Reputation: 57134

You need to create an instance variable to hold the current factIndex, if that is what you actually are trying:

import UIKit

class FailureViewController: UIViewController {

    @IBOutlet weak var failFactLabel: UILabel!
    var factIndex = 0

    let failFact = Failure()

    override func viewDidLoad() {
        super.viewDidLoad()

        failFactLabel.text = failFact.failArray[factIndex]
    }

   @IBAction func showFunFact() {
        factIndex++
        if factIndex >= failFact.failArray.count then {
            factIndex = 0
        }
        failFactLabel.text = failFact.failArray[factIndex]
    }
}

Upvotes: 3

Related Questions