2016-07-11 2 views
0

В настоящее время я пытаюсь реализовать метод, который позволит мне инициализировать новые экземпляры класса во время выполнения. (Например, просто добавление нового человека в список контактов.) Многое в конечном итоге привело меня к объекту Заводы, но более пристальный взгляд просто представил аргументы, заявляя, что они не нужны в Свифте.Инициализация времени выполнения в Swift

Здесь я просто пытаюсь инициализировать новый экземпляр Person, а затем немедленно присоединить указанное Person к массиву People с помощью функции, которая позже может быть привязана к пользовательскому вводу.

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

Все инициализации «во время выполнения» ... то, что именно вы пытаетесь достичь? – Alexander

+0

Если бы я должен был догадаться, я думаю, что вы хотите выбрать один из нескольких типов для создания экземпляра и использования полиморфно. Это верно? – Alexander

+5

Что именно не работает с «Лицом (имя:« confusedCoder90 », возраст: 26)'? – zneak

ответ

0

В MainClass вы создаете arrayOfPersons, где будет храниться лицо. Затем в функции вы добавляете новое Person к массиву с указанием имени и возраста. Не забудьте вызвать self.createPerson() где-нибудь, чтобы заставить его работать. Мое предложение - начать тестировать его в viewDidLoad.

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); 
    } 
} 

Чтобы проверить, что он был добавлен также можно распечатать массив Назвав self.printArray(); после self.createPerson();:

func printArray() { 
    for person in arrayOfPersons { 
     print("Person Name: \(person.name), \(person.age)"); 
    } 
} 
Смежные вопросы