今まで Objective-C で iOSアプリを開発していましたが、Apple社の方針的にも、そろそろ Swift へ移行する時期かも。
ということで、Swift 言語仕様のメモをここに綴ります。
文字列中に変数を展開する
// シンプルなパターン let foo = "新幹線" let bar = "東海道\(foo)" print(bar) // 東海道新幹線 // 書式を使うパターン let foo = 1 let bar = String(format: "番号=%03d", foo) print(bar) // 番号=001
現在の時刻を取得する
// ローカル日時 let date = Date() let cal = Calendar.current let year = cal.component(.year, from: date) let month = cal.component(.month, from: date) let day = cal.component(.day, from: date) let hour = cal.component(.hour, from: date) let min = cal.component(.minute, from: date) let sec = cal.component(.second, from: date) let nanosec = cal.component(.nanosecond, from: date) let wday = cal.component(.weekday, from: date) // 1=日曜日 print(String(format: "%d/%02d/%02d %02d:%02d:%02d.%d %d", year, month, day, hour, min, sec, nanosec, wday)) // 2017/01/27 21:13:48.241433024 6 // Unix epoch time (UTCでの1970年1月1日午前零時からの秒数) let nowsec = time(nil) print(nowsec) // 1485518007
関数コール
// // _ を付加するとコール時の引数名を省略できる // func foo(_ bar: Int){ print(bar) } foo(50) // bar の記述は不要 // // 複数の戻り値(タプル) // func foo() -> (apple: Int, banana: Int) { let apple = 10 let banana = 20 return (apple, banana) } var ret = foo() print(ret.apple, ret.banana) // 10 20
クラス
// // イニシャライザ(コンストラクタ) // class Foo { var apple = 0 var banana = "" init(apple: Int, banana: String) { self.apple = apple self.banana = banana } } let foo = Foo(apple: 10, banana: "XYZ") print(foo.apple, foo.banana) // 10 XYZ