2016-11-01 21 views
0

我已經在此之前斯威夫特3,我升級到斯威夫特3後工作的下面的代碼,它不正確期權價值沒有得到分配給一個變量正確

let calendar = Calendar.current 
    let components = (calendar as NSCalendar).components([.hour, .minute], from: currentDate) 
    let hour = components.hour 
    let minutes = components.minute 
    var time = String(describing: hour) + ":" + String(describing: minutes) 
    var newTime = time.components(separatedBy: ":") 
    var ihh = Int(newTime[0]) 
    var imm = Int(newTime[1]) 

    var shh = String(ihh!) 
    var smm = String(imm!) 


NEWTIME陣列有工作2中的選項值,我用調試器進行了驗證。
但是,在將值分配給ihh,imm後,我看到他們兩個(ihh,imm)都是零。
任何想法如何解決這個問題?
博爾納

回答

1

VAR時間=字符串(!小時)+ 「:」 +字符串(!分鐘)

'描述' 增加了 「可選」 字變成你的字符串

+0

「描述」不是原因。 – vadian

+0

@vadian我面臨同樣的問題,同時將frpm swift 2遷移到swift 3.i真的知道'描述'構造函數創建不需要的前綴和後綴 – Vyacheslav

+0

@vadian你寫了幾乎一樣的 – Vyacheslav

1

所有日期部件 - 由在Swift 3中,components已被更改爲dateComponents,這也避免了轉換爲NSCalendar--是Swift 3中的可選項(與Swift 2中的非可選項不同),您必須拆開它們。

發生錯誤是因爲像"Optional(15)"這樣的文字不能轉換爲Int

let hour = components.hour! 
let minutes = components.minute!