Как начать структуру в Swift 4.2 - PullRequest
0 голосов
/ 28 декабря 2018

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

Пример структуры:

struct Person: Decodable {
    let name: String
    let age: Int
}

Я хочу использовать эту глобальную структуру в моемскрипт.Я думаю, что так и было бы (но это не работает из-за строки 3):

import UIKit
class ViewController: UIViewController {
    let personExample: Person()

    func configure(person: Person) {
        self.personExample = person
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        print(self.personExample)
    }
}

Ответы [ 2 ]

0 голосов
/ 28 декабря 2018

Синтаксис здесь просто неверен:

let personExample: Person()

Что вы имели в виду, это было:

let personExample: Person

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

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

var personExample = Person(name: "Bob", age: 21)

Это присвоит personExample этому значению (и через вывод типа назначьте тип Person).Я использовал var здесь, потому что configure(person:) пытается изменить его.

Вы также можете быть озадачены инициализацией переменных экземпляра в контроллерах представления при использовании раскадровок.Если это ваша проблема (например, вы видите ошибки из-за того, что personExample не был установлен во время инициализации), вам нужно немного подробнее рассказать о вашей ситуации, и мы можем помочь вам в этом.

0 голосов
/ 28 декабря 2018

Вам нужно

 var personExample: Person?

func configure(person: Person) {
    self.personExample = person
}

сначала это let personExample: Person() неправильный синтаксис, и если вы изменили на

var personExample: Person

, это вызовет ошибку, как и должно бытьинициируется в методах vc init, также, если вы не реализуете кодирование, удалите : Decodable {

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