[英]Default value won't set to Nil? - Swift
如何將默認值設為 nil? 我試圖在func stockInfoPerDay(jsonData: StockInfo?)
和func stockInfoSingleDay(singleJSONData: StockInfoOneDay?)
設為可選,但這讓我在 for 循環中遇到了麻煩......當 Force-展開,但我不想強制展開。
.onAppear(){
stockInfoPerDay(jsonData: jsonData ?? nil) <---- *'nil' is not compatible with expected argument type 'StockInfo'*
stockInfoSingleDay(singleJSONData: singleJSONData ?? nil) <---- *'nil' is not compatible with expected argument type 'StockInfoOneDay'*
}
static var pricesForOneMonth: [CGFloat] = []
static var priceForOneDay: [StockInfoOneDay] = []
func stockInfoPerDay(jsonData: StockInfo) {
CropPriceView.pricesForOneMonth.removeAll()
for data in jsonData.data{
CropPriceView.pricesForOneMonth.append(CGFloat(data.close))
}
}
func stockInfoSingleDay(singleJSONData: StockInfoOneDay){
CropPriceView.priceForOneDay.removeAll()
CropPriceView.priceForOneDay.append(singleJSONData)
}
您不能將 nil 傳遞給 function 參數,除非該參數是可選參數。 您需要重寫您的 function 以接受可選的:
func stockInfoPerDay(jsonData: StockInfo?) {
guard let jsonData = jsonData else { return } //Exit if you are passed a nil.
CropPriceView.pricesForOneMonth.removeAll() //Move this above the guard if you want to empty the CropPriceView when you are passed a nil.
for data in jsonData.data{
CropPriceView.pricesForOneMonth.append(CGFloat(data.close))
}
}
請注意,您可以處理此問題的另一種方法是單獨保留您的stockInfoPerDay()
function,並使用“可選綁定”( if let
)僅在參數不為零時調用您的 function:
.onAppear(){
if let validJsonData = jsonData {
stockInfoPerDay(jsonData: validJsonData)
}
if let validSingleJSONData = jsonData {
stockInfoSingleDay(singleJSONData: validSingleJSONData)
}
}
您需要對其進行理想設置,以便您的函數接受可選參數作為參數並處理函數中的 nil 情況,通常使用保護語句。 但是,既然你說你有一個問題,我不知道那個問題是什么,我可以建議將你的代碼更改為這樣的
stockInfoPerDay(jsonData: jsonData ?? StockInfo()) // <- Just make sure you have a good default initializer for the StockInfo object. Handle the possibility that jsonData was nil and StockInfo is empty inside the stockInfoPerDay function.
stockInfoSingleDay(singleJSONData: singleJSONData ?? StockInfoOneDay())
讓我知道這是否有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.