Несколько экземпляров класса в Swift

#ios #swift #class #instance

#iOS #swift #класс #экземпляр

Вопрос:

Здесь возникает, возможно, очень простой вопрос. Я создал пользовательский класс ‘Person’, в котором хранится информация о конкретном человеке. Ниже приведен следующий класс, который я создал:

 class Person: NSObject {
    var name: String
    var age: Int
    var height: Double

    init(name: String, age: Int, height: Double) {
        self.name = name
        self.age = age
        self.height = height
    }
}
  

Я могу создать новый экземпляр этого класса следующим образом:

 let person1 = Person(name: "Bob", age: 25, height: 1.62)
  

Я также понимаю, что могу сохранить эти экземпляры этого класса в массиве, как только я инициализирую каждый из них. Однако проблема в том, что в моем приложении я хочу иметь большое количество экземпляров, около 30 из них.

Я знаю характеристики каждого экземпляра класса, который мне нужен, прежде чем запускать приложение.

Мой вопрос заключается в следующем. Есть ли лучший способ создать эти экземпляры класса вместо того, чтобы делать это по одному при запуске приложения?

Комментарии:

1. Что вы конкретно имеете в виду «при запуске приложения» — вы загружаете некоторые данные из базы данных или что? Также, вероятно, лучшим решением будет создать struct вместо class 🙂

Ответ №1:

Есть ли лучший способ создать эти экземпляры класса вместо того, чтобы делать это по одному при запуске приложения?

Нет. Вы должны делать это точно так же, как Супермен надевает штаны, по одной ноге за раз. Даже ваш делегат приложения и ваши общие экземпляры приложения должны быть созданы. Единственный способ создания экземпляров — это создание экземпляра!

Однако, возможно, существует лучший способ закодировать это. Например, вы могли бы поместить данные (т.Е. характеристики каждого объекта) в файл .plist, или XML-файл, или даже базу данных SQLite и загрузить их при запуске, вместо того, чтобы полностью записывать каждый экземпляр вручную и, таким образом, жестко кодировать эти характеристики в свой код.

Ответ №2:

Во-первых, 30 — это небольшое число для простого класса. Но копирование / прошивка 30 копий кода создания экземпляра, безусловно, было бы раздражающим, и мотивацией является разделение данных из кода.

С этой целью, вероятно, самым простым является поместить все данные в простой список свойств, добавить список свойств в ваше приложение в качестве ресурса, прочитать его, а затем выполнить цикл над содержимым, попутно создавая экземпляры Person().

Выделение и создание экземпляров из 30 человек неизбежно, но вы можете использовать вышеописанное, чтобы уменьшить количество строк кода, необходимых для этого.


Однако, на самом деле… 30 строк из:

 array.append(Person(...))
  

Не так ли плохо сделать один раз, и если вы действительно не собираетесь часто менять данные, зачем беспокоиться об их разделении? Его будет нетрудно заменить позже, и, честно говоря, наиболее производительная программа часто та, которая отправляется первой.

 import Cocoa

class Person: NSObject {
    var name: String
    var age: Int
    var height: Double

    init(name: String, age: Int, height: Double) {
        self.name = name
        self.age = age
        self.height = height
    }
}

var persons = [Person]()

persons.append(Person(name: "bob", age: 42, height: 6.2))
persons.append(Person(name: "fred", age: 32, height: 5.9))
... repeat 28 times ...
  

Meh — для обучения? Я бы просто сделал вышеописанное.