2016-11-01 4 views
0

私は前スウィフト3に働いていた次のコードを持っていると私はスウィフト3にアップグレードした後、それは右オプション値を変数に代入取得されていない正しく

NEWTIME配列を持っている
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!) 


動作しません。 2つのオプション値があり、私はそれをデバッガで検証しました。
しかし、値がihh、immに割り当てられた後、私はそれらの両方(ihh、imm)がゼロであることがわかります。
これを修正する方法はありますか?
ボルナ

答えて

1

VAR時間=文字列(時間!)+ ":" +文字列(分!)

あなたの文字列に "オプション" という言葉

+0

「記述する」はその理由ではありません。 – vadian

+0

@vadian私はfrpm swift 2をswift 2に移行する際に同じ問題に直面しました。「記述する」コンストラクタが望ましくないプリフィズとサフィックスを作成することを実際に知っています – Vyacheslav

+0

@vadianあなたはほとんど同じ書いています – Vyacheslav

1

すべての日付コンポーネントを追加して '記述' - で方法は、componentsがSwift 3のdateComponentsに変更されました。これは、NSCalendarへのキャストも回避します - Swift 3のオプション(Swift 2の非選択肢とは異なり)をアンラップする必要があります。

"Optional(15)"のようなリテラルをIntに変換できないため、エラーが発生します。

let hour = components.hour! 
let minutes = components.minute! 
関連する問題