Как передать данные структуры в подготовке к seque - PullRequest
0 голосов
/ 10 февраля 2019

Я получаю следующую ошибку при попытке передать данные из одного viewcontroller в другой: «Невозможно присвоить значение типа« activityTableViewController.request »для типа« ActivityDetailTableViewController.request? »"

Что я делаю неправильно?

Контроллер первого вида:

class activityTableViewController: UITableViewController {

struct request {
    var fromDateAndTime: String
    var toDateAndTime: String
    var createdBy: String

    init(fromDateAndTime: String, toDateAndTime: String, createdBy: String) {
        self.fromDateAndTime = fromDateAndTime
        self.toDateAndTime = toDateAndTime
        self.createdBy = createdBy
    }
}

var requestList: [request] = []

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "activityToDetail" {
        if let nextViewController = segue.destination as? activityDetailTableViewController {
            let indexPath = tableView.indexPathForSelectedRow
            nextViewController.requestDetail = requestList[indexPath!.row]
        }
    }
}

}

Контроллер второго вида:

class activityDetailTableViewController: UITableViewController {

struct request {
    var fromDateAndTime: String
    var toDateAndTime: String
    var createdBy: String

init(fromDateAndTime: String, toDateAndTime: String, createdBy: String)    {
        self.fromDateAndTime = fromDateAndTime
        self.toDateAndTime = toDateAndTime
        self.createdBy = createdBy
    }
}

var requestList: request!

}

Ответы [ 2 ]

0 голосов
/ 10 февраля 2019

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

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

Создайте одну структуру вне любого класса и удалите инициализатор, потому что вы получаете его бесплатно.

struct Request {
    var fromDateAndTime: String
    var toDateAndTime: String
    var createdBy: String
}
0 голосов
/ 10 февраля 2019

Вам нужно иметь только 1 struct, так как он будет виден во всем приложении, и получить его из любого класса

struct Request {
    var fromDateAndTime,toDateAndTime,createdBy: String 
}

плюс нет необходимости писать init внутриТип структуры и начинайте с заглавной буквы

Нет возможности объявить структуру с тем же именем, что и у другого, это логическое ограничение языка

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