我正在嘗試使用 weekdaysymbol 列印一系列作業日 - 這是我到目前為止的代碼
for i in Weekdaysnumbers {
let calender = Calendar.current
let weekdayIndex = ((Weekdaysnumbers[i!]! - 1) (calender.firstWeekday - 1)) % 7
varWeekdaysStrings.append(calender.shortWeekdaySymbols[weekdayIndex])
}
Weekdaysnumbers 存盤用戶可以設定的作業日整數陣列。然后我想列印一個代表它的字串。我將它設定在一個 for 回圈中,該回圈遍歷 Weekdaysnumbers 陣列并將其附加到新陣列中。但我收到此錯誤訊息
Thread 1: Fatal error: Index out of range
- 我怎樣才能擺脫這個錯誤?任何幫助都會很棒。
uj5u.com熱心網友回復:
你的代碼沒有意義。
線for i in Weekdaysnumbers {
為您提供一個回圈,在每次迭代中,i將包含Weekdaysnumbers陣列中的順序值。
使用Weekdaysnumbers[i!]嘗試索引Weekdaysnumbers與價值i是錯誤的,并可能會與陣列索引越界錯誤,如您報告一個的崩潰。i包含陣列中的值,而不是陣列的索引。
此外,在您完全理解選項之前,不要使用 force-unwrap 。將 force-unwrap ( !) 運算子視為“如果為零則崩潰”運算子,因為它就是這樣做的。
最后一點與您的崩潰無關,Swift 中的變數名應該以小寫字母開頭,并且應該使用“camel case”,所以Weekdaysnumbers應該命名為weekdaysNumbers. (型別名和類名應該以大寫字母開頭。變數名和函式名應該以小寫字母開頭。)這是 Swift 中的一個強約定。
uj5u.com熱心網友回復:
在訪問 shortWeekdaysSymbols 陣列之前,您應該從作業日日歷組件值中減去 1。
作業日日歷組件的值在 1…7 之間(對于公歷),而 shortWeekdaysSymbols 陣列是基于 0 的索引。
uj5u.com熱心網友回復:
我找到了答案 - 感謝@Duncan CI 的幫助,我意識到了我的錯誤,我做了以下修復我的代碼
for i in Weekdaysnumbers {
switch i {
case 1:
varWeekdaysStrings.append("Sunday")
case 2:
varWeekdaysStrings.append("Monday")
case 3:
varWeekdaysStrings.append("Tuesday")
case 4:
varWeekdaysStrings.append("Wednesday")
case 5:
varWeekdaysStrings.append("Thursday")
case 6:
varWeekdaysStrings.append("Friday")
case 7:
varWeekdaysStrings.append("Saturday")
default:
print("error")
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/421112.html
標籤:
