App maken: ook jij kunt het leren!

 

de iOS Academie Forums

Forums - Producten van de iOS Academie - Het boek: Programmeren met Swift: Rekenmachine

Hans  Hans heeft nog geen Studiekaart. Klokje06 jun 2015, 21:47
Avatar
Avatar
Berichten:5


Ik ben een rekenmachine aan het bouwen.

 

Ik heb een functie gemaakt:

    func performOperation(operation: (Double, Double) -> Double) {

        if operandStack.count >= 2 {

            displayValue = operation(operandStack.removeLast(), operandStack.removeLast())

            enter()

        }

    }

Nu wil ik ook de wortel uit een getal kunnen halen en daarvoor kan ik dezelfde functie gebruiken maar dan met 1 argument en niet 2. Ik voeg dan dezelfde functie nog een keer toe in de code en verander dan het aantal operanden van twee naar een.

    func performOperation(operation: Double -> Double) {

        if operandStack.count >= 1 {

            displayValue = operation(operandStack.removeLast())

            enter()

        }

    }

Als ik dat doe krijg ik een foutmelding:

Method 'performOperation' with Objective-C selector 'performOperation:' conflicts with previous declaration with the same Objective-C selector

Ik heb als taal Swift gekozen en dacht dat dit wel kon.

Wat doe ik fout? Wie kan mij helpen?

 

Reageer


AppChanger  Laurens heeft nog geen Studiekaart. Klokje07 jun 2015, 10:32
Avatar
Avatar
Berichten:301
Fans:13


Hallo Hans,

Ik zie dat je een cursus van Standford aan het volgen bent. Deze cursus is gescheven met Swift 1.0.

Sinds Xcode 6.3 (Swift werd 1.2) zijn er veel dingen verandert aan Swift, ook bij deze methode zijn er dingen veranderd.

De oplossing vind je hier: http://stackoverflow.com/questions/29457720/compiler-error-method-with-objective-c-selector-conflicts-with-previous-declara

private func performOperation(operation: Double -> Double) { if operandStack.count >= 1 { displayValue = operation(operandStack.removeLast()) enter() } }


Normaal zou het zo moeten werken.

Indien niet moet je eens proberen om de namen van je selectors ("performOperation") te veranderen.
Naar bevoorbeeld : "performOperation" en "performSquareRootOperation"

Ik hoor graag of het gelukt is.

Veel succes!

Met vriendelijke groeten,

Laurens

Reageer


Hans  Hans heeft nog geen Studiekaart. Klokje07 jun 2015, 20:26
Avatar
Avatar
Berichten:5


Is idd een cursus bij Stanford. Volgens mij wel een ge-update versie van Swift, maar blijkbaar met oude voorbeelden. Dank voor de oplossing.

Reageer

Leuk! 1 persoon vindt vindt dit leuk.