水夫と戯れて

Appleの開発言語Swiftのことを書く。公開されている範囲内で書いています。文章に「?」が含まれているところはよく理解していないところ。

2014-01-01から1年間の記事一覧

SwiftからObjective-Cクラスを使う

目次>クラス>継承 NSAppricationのサブクラスをswiftで使う NSPrincipalClassを設定する <key>NSPrincipalClass</key> <string>MyApplication</string> @objc()でクラスを設定 import AppKit @objc(MyApplication) class MyApplication: NSApplication { }

Computed プロパティ(Computed Properties)

タプル

目次> switch文で複数の値を使うことができたりする。 数値の代わりに _ を使うことができる。 範囲を示す場合は(-2...2, -2...2)のように...で表す。 バリューバインディング //Value binding func function002() { let thePoint = (0, 2) switch thePoint …

ネスト化タイプ

目次> アクションでのネスト化タイプ ネスト化タイプへの参照

プロトコル

目次> 文法 protocol InheritingProtocol: SomeProtocol, AnotherProtocol { //プロトコル定義 } protocol PrettyTextRepresentable: TextRepresentable { func asPrettyText() -> String } 必要とされるプロパティ 必要とされるメソッド タイププロトコル …

プリミティブタイプ

目次> 数値を変数にセットするとき、カンマの代わりに_を使って桁区切りにすることができる。 let count = 3_000_000_000_000 数値を文字列に let age = response.toInt() |C Type|Swift Type| |bool|CBool| |char, signed char|CChar| unsigned char CUnsig…

型変換

目次> 型変換のクラス階層を定義 タイプチェック downcasting AnyObjectの型変換 Any AnyObject 数値を文字列に toInt()関数 func function001() { let question : String = "30" var age : Int = question.toInt()! println("\(++age)") }

ジェネリックス

目次> クラスや関数を使用する側が扱う型を指定できる

その他の演算子

目次>

文法構造

目次>

目次> 型 名称 意味 例 String 文字列 Character Bool ブール true/false Int Double 型は通常nilを持つことができない nilを持たせる場合はOptional

構造体

パターンマッチ

目次> forやswitchで使う

エクステンション(Extentions)

目次> Obj-Cのカテゴリのような感じで機能拡張ができる。 プロパティの追加 インスタンスメソッドとタイプメソッドの追加 新しい初期化を提供 サブスクリプトの定義 ネスト化タイプの定義と使用 エクステンションの文法 Computed プロパティ イニシャライザ …

オプショナルチェーン(Optional Chaining)

目次> チェーン内のどれかがnilの場合にfalseにするなどして使う アンラップの代わりとしてのオプショナルチェーン オプショナルチェーンのモデルクラスを定義 オプショナルチェーンを通してプロパティを呼ぶ オプショナルチェーンを通してメソッドを呼ぶ オ…

Optional(オプショナル)

目次> 型のあとに?がつく Stringのあとに?をつけてString? Stringまたはnil という意味 Swiftでは基本的にnilは含まれない。nilが含まれるのを許可する場合は?をつける オプション型を非オプション型にする オプション型を非オプション型にすることをアンラ…

自動参照カウント(ARC)

目次>

解放

目次> Deinitialization deintを使う deinit { // perform the deinitialization } class Player { var coinsInPurse: Int init(coins: Int) { coinsInPurse = Bank.vendCoins(coins) } func winCoins(coins: Int) { coinsInPurse += Bank.vendCoins(coins) …

初期化

目次> ストアされたプロパティの初期値のセット イニシャライザ デフォルトのプロパティ値 初期化のカスタマイズ パラメータの初期化 ローカルと外部パラメータ名 オプションのプロパティタイプ 初期化で固定されたプロパティを修正する デフォルトのイニシ…

継承

目次> サブクラス化 SomeSuperclassクラスを継承してSomeClassを作成する場合 class SomeClass: SomeSuperclass { // class definition goes here } 初期化メソッドなど、上書きする場合は、superの初期化メソッドを呼び出してから class Bicycle: Vehicle {…

サブスクリプト

目次> クラス、構造体、列挙はサブスクリプトを定義できる コレクション、リスト、シーケンスの要素にアクセスしやすくするためのもの subscript(index: Int) -> Int { get { // return an appropriate subscript value here } set(newValue) { // perform a…

メソッド

目次> 書き方は関数と同じ インスタンスメソッド class Counter { var count = 0 func increment() { count++ } func incrementBy(amount: Int) { count += amount } func reset() { count = 0 } } メソッドのローカル、外部パラメータ名 インスタンスメソッ…

プロパティ

目次> Lazy Stored Properties @lazy var importer = DataImporter() ストアされたプロパティとインスタンス変数 プロパティ監視 グローバルとローカル変数 タイププロパティ self プロパティの追加はエクステンションで可能

クラス

目次> クラス名は大文字で始まる class クラス名 {} 初期化するときは var instance = ClassName() ストラクチャ・クラスの定義 struct Resolution { var width = 0 var height = 0 } class SomeClass { // class definition goes here } プロパティの定義 …

列挙

目次> Enumerations enum SomeEnumeration { // enumeration definition goes here } caseが使える enum CompassPoint { case North case South case East case West } このようにもかける enum Planet { case Mercury, Venus, Earth, Mars, Jupiter, Saturn…

クロージャー

目次> reversed = sort(names, { (s1: String, s2: String) -> Bool in return s1 > s2 }) ショートハンド引数名 $0 , $1 1番めのパラメータ、2番めのパラメータ オペレーター関数 Capturing Values

関数

目次> よくある関数みたい func sayHello(personName: String) -> String { let greeting = "Hello, " + personName + "!" return greeting } 引数 ラベルなしでもよい。 引数がない場合 func sayHello(){ } 引数がある場合 func sayHello(personName: Strin…

条件分岐

目次> if ( )はいらない。 ( )があってもいい。 ( )をつけないのが基本の流儀 var myMember = 1 if myMember <= 3 { println("メンバーは3人以下です。") } if〜else myMember = 5 if myMember <= 3 { println("メンバーは3人以下です。") }else{ println("…

ループ

目次> for 普通にループ変数を設定してインクリメントするような使い方 for var index = 0; index < 3; ++index { println("index is \(index)") } for in 基本は for i in 1...5{} ループ変数を使う必要がない場合は省略できる for _ in 1...5{} Obj-Cと同…

辞書(Dictionary)

目次> Objective-CでDictionaryと呼ばれているもの。 他の言語では連想配列とか func function001() ->String { var members = [ "鈴木さん": "部長", "山田さん": "課長", ] members["鈴木さん"] = "嘱託" return members["鈴木さん"]! } override func vie…