[英]how to unwrap swift optionals within a struct
我正在學習 swift 並找到了一個在結構中包含可選屬性的示例。 當我嘗試為可選設置一個值時,我發現它是 nil。
struct Price{
var USD: Double = 0.0
var CAD: Double = 0.0
}
struct Item{
var name: String = "not defined"
var price: Price?
}
var purchase:Item = Item()
purchase.name = "lampshade"
purchase.price?.USD = 19.2
print("purchase name is \(purchase.name), purchase price is \(purchase.price?.USD)")
產量
purchase name is lampshade, purchase price is nil
如果我嘗試 (purchase.price.USD) 我收到錯誤“可選類型‘價格’的值? 必須打開包裝以引用包裝基本類型“價格”的成員“美元”
如何打開價格以設置美元值?
如果您沒有為Optional
本身賦值,則不能直接設置Optional
的屬性,因為由於可選鏈接,不會調用usd
的設置器。
相反,您需要為purchase.price
分配一個Price
。
var purchase:Item = Item()
purchase.name = "lampshade"
purchase.price = Price(USD: 19.2)
或者,如果你想分配一個“空”的price
,那么可選的鏈接就可以了,因為現在price
不是nil
。
var purchase:Item = Item()
purchase.name = "lampshade"
purchase.price = Price()
purchase.price?.USD = 19.2
此外,您應該嘗試使屬性不可變默認不可變( let
),並且僅在初始化后確實需要更改屬性時才使屬性可變( var
)。 您還應該只在屬性具有默認值的情況下添加默認值。 例如, name
不應該有一個,而是應該是不可變的,其值在init
中設置。
struct Item{
let name: String
var price: Price?
}
var purchase = Item(name: "lampshade")
purchase.price = Price(USD: 19.2)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.