此错误是什么意思,我该如何解决?

时间:2020-10-16 03:42:35

标签: swift

我正在学习Swift和SwiftUI。 如果您解决以下问题,我将不胜感激。 该错误是什么意思,我该如何解决?

SwiftPrac01.swift

class Address {

  var city: String

  init(city: String) {
    self.city = city
  }
}

class Person {

  var name: String
  var address: Address

  init(name: String){
    self.name = name
  }
}


var sonHM: Person = Person(name: "sonHM")
sonHM.address = Address(city: "tottenham")

print(sonHM.address.city)

error code : Return from initializer without initializing all stored properties

3 个答案:

答案 0 :(得分:1)

您在address类中声明了一个名为Person的变量:

var address: Address

但是,您到达了init的末尾而没有为此变量提供值。

Swift要求在对象完成初始化之前,所有未声明为可选的变量都必须具有值。您可以通过在self.address方法中设置init或通过提供默认值来实现此目的,例如:

var address: Address = ...something...

答案 1 :(得分:0)

swift是安全类型语言,这意味着您应该告诉变量可能为null或始终具有值

通过nullable标记有一些?变量。因此它告诉您变量可能为null,

如果您未给地址加上?标记,则表示它必须有一个值 在初始化时,您还必须设置地址值

答案 2 :(得分:0)

在Person类中,您没有初始化地址。

尝试一下

class Address {

  var city: String

  init(city: String) {
    self.city = city
  }
}

class Person {

  var name: String
  var address: Address

    init(name: String, address: Address){
    self.name = name
        self.address = address
  }
}

let youradress = Address(city: "tottenham")
var sonHM: Person = Person(name: "sonHM", address: youradress)
//sonHM.address = Address(city: "tottenham")

print(sonHM.address.city)