Лучший способ хранить и обновлять данные лотов в Swift для использования в UITableView - PullRequest
1 голос
/ 08 мая 2020

Это немного сбивает с толку, поэтому прошу прощения. Но: я пытаюсь создать приложение, в котором пользователь имеет возможность добавлять элементы в список отдельных элементов, которые будут отображаться им обратно (что-то вроде строк приложения со списком задач) в виде таблицы.

Однако я столкнулся с препятствием. Мне нужно хранить несколько разных бит данных для каждого элемента (некоторые строки, некоторые целые числа и дата) в списке.

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

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

Извините, это так сбивает с толку, и любая помощь будет оценена! Не стесняйтесь спрашивать дополнительную информацию

Изменить: то, что я ищу, и я уверен, что есть глупо простой способ сделать это, но я пытаюсь понять, как создать экземпляр класса, когда имя класса хранится в переменной. Ecencialy Я хочу, чтобы экземпляр класса сохранил элемент. Создается, когда пользователь вводит элемент, который нужно добавить в таблицу.

Например. Они входят в предмет. item1 и другие данные, которые идут вместе с ним, я хочу иметь возможность хранить это в экземпляре класса элемента, но я не знаю, как сделать имя этого экземпляра, потому что имя, которое я хочу, то есть элемент 1, хранится в переменная.

Извините, это так сбивает с толку, поэтому мне нужна помощь

1 Ответ

0 голосов
/ 10 мая 2020

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

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

Сначала создайте пустой массив, содержащий все Items как свойство:

var items : [Item] = []

Второй вызов функции populateItemArray() в вашем viewDidLoad():

private func populateItemArray() {
    // Populate the items Array (Are you using CoreData, Realm, ...?)
}

В-третьих, используйте массив элементов для заполнения TableView. ПОМНИТЕ: если вы используете только один раздел в tableView, indexPath.row всегда равно соответствующему элементу в массиве. Например, items[indexPath.row]

Надеюсь, это вам поможет!

ОБНОВЛЕНИЕ:

Посмотрите на этот пример структуры Item. Как видите, в нем также можно сохранить дату:

struct Item {

    // First create all the properties for your struct.
    var data1: String
    var data2: Int
    var data3: String

    // You can create properties of any type you want, also of type date.
    var dateOfCreation : Date



    // Then implement all the methods of your custom Struct Item.
    func setDate(with date : Date) {
        self.dateOfCreation = date
    }

    func returnDate() -> Date {
        return self.dateOfCreation
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...