2016-09-05 1 views
1

Ich habe gerade angefangen Swift zu lernen, und als Teil eines meiner Programme habe ich versucht, eine Reihe von Klassen-Instanzen zu verwalten und verwenden Sie .append, um dem Array von Klassen neue Instanzen hinzuzufügen.Swift "Extra Argument in Call" -Fehler bei der Verwendung .append zu einem Array von Klassen

Beim Versuch, eine neue Klasseninstanz an das Array anzuhängen, wird jedoch der Fehler "Zusätzliches Argument im Aufruf" angezeigt. Ich war sicher, Datentypen für alle Variablen anzugeben, um sicherzustellen, dass kein Compilerfehler mit in Konflikt stehenden Datentypen vorliegt, aber das Problem wurde dadurch noch nicht behoben. Hier

ist der Code:

import UIKit 

var personMgr: personManager = personManager() 

class person{ 

    var name:String = "Default" 
    var description:String = "Default" 
    var presentIdeasDict:[Int: String] = [ 
     0: "nil" 
    ] 
    var presentLinkDict:[Int: String] = [  //Use same key for name of present idea and link for the present 
    0: "nil" 
    ] 

} 

class personManager{ 

    var people = [person]() 

    func addPerson(name: String, description: String){ 
     people.append(person(name: name, description: description, presentIdeasDict: [0: "nil"], presentLinkDict: [0: "nil"])) 
    } 

} 

Der Fehler sagt „Extra Argument 'name' in Aufruf in der Zeile:

people.append(person(name: name, description: description, presentIdeasDict: [0: "nil"], presentLinkDict: [0: "nil"])) 
+0

Mögliches Duplikat [Swift - Extra Argument in Call] (http://stackoverflow.com/questions/24795035/swift-extra-argument-in-call) – Patrick

Antwort

1

Sie benötigen einen Initialisierer für Ihre machen "Person" Klasse

Beachten Sie, dass Sie auch Standardwerte für die Initialisierungsparameter festlegen können, damit Sie die Standardeinstellungen nicht an mehreren Stellen verwenden müssen (Sie können sogar die Standardparameter in anderen Initialisierungen weglassen).

Beachten Sie auch, dass per Konvention ein Klassenname groß geschrieben werden sollte.

Beispiel:

class Person { 

    var name:String 
    var description:String 
    var presentIdeasDict:[Int: String] 
    var presentLinkDict:[Int: String] 

    init(name: String = "Default", description: String = "Default", presentIdeasDict: [Int: String] = [0: "nil"], presentLinkDict: [Int: String] = [0: "nil"]) { 
     self.name = name 
     self.description = description 
     self.presentIdeasDict = presentIdeasDict 
     self.presentLinkDict = presentLinkDict 
    } 

} 

class PersonManager { 

    var people = [Person]() 

    func addPerson(name: String, description: String) { 
     people.append(Person(name: name, description: description)) 
    } 

} 
Verwandte Themen