2016-07-11 11 views
0

Ich versuche gerade, eine Methode zu implementieren, die es mir erlaubt, neue Instanzen einer Klasse während der Laufzeit zu initialisieren (z. B. einfach eine neue Person zu einer Kontaktliste hinzufügen). Viel Suchen führte mich schließlich zu Object Fabriken, aber ein genauerer Blick, präsentierten nur Argumente, die besagen, dass sie in Swift unnötig waren.Laufzeitinitialisierung in Swift

Hier versuche ich einfach, eine neue Instanz von Person zu initialisieren und dann diese Person sofort an das People-Array mit einer Funktion anzuhängen, die später an Benutzereingaben gebunden werden kann.

class Person{ 
    var name: String 
    var age: Int 
    init(name: String, age: Int){ 
     self.name = name 
     self.age = age 
    } 
} 

var People:[Person] = [] 

func CreatePerson() { 
    // here I would be creating an instance of Person initialized with name and age 
    // People.append (just made Person). 
} 
+0

Alle Initialisierung „Laufzeit“ ... was genau wollen Sie zu erreichen? – Alexander

+0

Wenn ich eine Vermutung abgeben musste, denke ich, dass Sie sich zwischen einer von mehreren Arten aussuchen, um polymorph zu instanziieren und zu verwenden. Ist das richtig? – Alexander

+5

Was genau funktioniert nicht mit 'Person (Name:" confusedCoder90 ", Alter: 26)'? – zneak

Antwort

0

In der MainClass Sie erstellen ein arrayOfPersons wo Personen gespeichert werden. Dann fügen Sie in der Funktion die neue Person an das Array mit dem Namen und dem Alter an. Denken Sie daran, self.createPerson() irgendwo aufzurufen, damit es funktioniert. Mein Vorschlag ist, es in der viewDidLoad zu testen.

class Person { 
var name: String 
var age: Int 
init(name: String, age: Int){ 
    self.name = name 
    self.age = age 
}} 

class MainClass { 
    var arrayOfPersons = [Person](); 

    func createPerson() { 
     let newPersonName = "Name and Surname"; 
     let newPersonAge = 18; 
     let newPerson = Person(name: newPersonName, age: newPersonAge); 
     self.arrayOfPersons.append(newPerson); 
    } 
} 

Um zu überprüfen, dass es gut aufgenommen Sie das Array drucken kann die self.printArray(); nach self.createPerson(); Aufruf:

func printArray() { 
    for person in arrayOfPersons { 
     print("Person Name: \(person.name), \(person.age)"); 
    } 
}