表达式类型是不明确的类错误



我对swift语言还很陌生,我刚刚参加了一门我买的课程,我发现自己经常遇到同样的错误代码"类型在没有更多上下文的情况下是模糊的";我理解它的意思(我想(,所以。我试图将一个内部存储有类的变量分配给类的另一个参数,如果这有意义的话。我知道我试图将一个类分配给一个字符串,但我想我的问题是如何实现这一点?在swift中有没有一种我不了解的类型会允许我做这样的事情?

class Adress {
let street: String
let city: String
let postalCode: String

init(street: String, city: String, postalCode: String) {
self.street = street
self.city = city
self.postalCode = postalCode
}
}
class PurchaseOrder {
var id: Int
var shippingAdress: (String)
var billingAdress: (String)

init(id: Int, shippingAdress: String, billingAdress:String) {
self.id = id
self.shippingAdress = shippingAdress
self.billingAdress = billingAdress
}
}
var defaultAddress = Adress(street: "555 North Pole Ave.", city: "North Pole City", postalCode: "H0H 0H0")
var aliceGift = PurchaseOrder(id: 001, shippingAdress: defaultAddress, billingAdress: defaultAddress)
// THE ERROR IS HERE ^^^^^^.
aliceGift.shippingAdress = "1000 North Pole Blvd."
print(aliceGift.billingAdress)
print(aliceGift.shippingAdress)

您有一个自定义的Adress类,因此应该在代码中使用它。将PurchaseOrder更改为

class PurchaseOrder {
var id: Int
var shippingAdress: Adress
var billingAdress: Adress
init(id: Int, shippingAdress: Adress, billingAdress:Adress) {
self.id = id
self.shippingAdress = shippingAdress
self.billingAdress = billingAdress
}
}

当然,如果您想更改任何地址属性,您也需要更改代码的其余部分,以便分配Adress对象,而不是String

您错误地将shippingAddressbillingAddress的类型声明为String而不是Address

class Address {
let street: String
let city: String
let postalCode: String
init(street: String, city: String, postalCode: String) {
self.street = street
self.city = city
self.postalCode = postalCode
}
}
class PurchaseOrder {
var id: Int
var shippingAddress: Address
var billingAddress: Address
init(id: Int, shippingAddress: Address, billingAddress: Address) {
self.id = id
self.shippingAddress = shippingAddress
self.billingAddress = billingAddress
}
}
var defaultAddress = Address(street: "555 North Pole Ave.", city: "North Pole City", postalCode: "H0H 0H0")
var aliceGift = PurchaseOrder(id: 001, shippingAddress: defaultAddress, billingAddress: defaultAddress)

最新更新