我正在学习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
答案 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)