ざっくりSwiftの使い方

# 書いてる人
プログラミング学習サービスやら、ペットサロン予約サービス、風俗検索サービスなど色々とやっている「かずきち」です。
■運営サービス一部
http://crazy-wp.com/
http://webukatu.com/
新宿のホストから不動産・保険の営業を経て、HTMLって何？という状態から３ヶ月独学でプログラミングやデザインを学び、IT業界で１年間実務経験を積んで年収は１本超え。現在は起業家としてサービス運営やら不動産運営をしています。
Qiita内にそれ系の記事も書いてます。
<a href="http://qiita.com/kazukichi/items/7379b75fba2f90d3cf45" target="_blank">エンジニアで稼ぐために大切な１３のコト</a>
<a href="http://qiita.com/kazukichi/items/aeba286c2a750081e5c0" target="_blank">WEBサービスで起業したい人に読んで欲しい１８のコト</a>

#Swiftとは？
Appleが開発した新しい言語。
今までiPhoneアプリを開発するにはObjective-C言語というやや癖のある言語を使わないと開発できなかったが、Swift言語が誕生したことで、かなり楽に作れるようになった。
Objecive-Cで開発するよりも高速に動くものが作れる。
Swiftは命令文の最後に「;（セミコロン）」をつけなくてよかったりと「Ruby」っぽい感じ。PHPやRuby言語しか知らない人にもとてもわかり易い。

#コメントアウト
```php:
■１行コメントの場合
//コメント内容
■複数行コメントの場合
/*コメント内容*/
```

#定数と変数
Swiftでは、「型推論」といって宣言時に設定された値を元に自動で型を推測して設定される。
PHPなどと違い型が動的に変わる「動的型付け」ではなく、あくまで「静的片付け」なので、宣言時に設定された型以外の値を入れようとするとエラーになる。

##定数の宣言
`let`を使う

```swift
let 定数名 = 値 //型を指定しない場合
//例
let num = 30
let str = "あいうえお"

let 定数名:型 = 値 //型を指定する場合
//例
let num:Int = 30
let str:String = "あいうえお"

let 定数名 = 値, 定数名 = 値, 定数名 = 値 //連続で宣言も可能


```

##変数の宣言
`var`を使う

```swift
var 変数名 = 値 //型を指定しない場合
//例
var num = 30
var str = "あいうえお"

var 変数名:型 = 値 //型を指定する場合
//例
var num:Int = 30
var str:String = "あいうえお"
var 変数名 = 値, 変数名 = 値, 変数名 = 値 //連続で宣言も可能

```

#型変換（キャスト）
宣言時に設定した型を一時的に変換する

```
var num:Int = 30
var str:String = "あいうえお"
str = String(num) //型(変数名or定数名)　でキャストできる
```

#数値の３桁区切り
数値を記述する場合、桁が大きくなると分かりにくいので、「_（アンダースコア）」を使って３桁ごとに区切って記述することができる。

```
let num = 12_350 * 2
println(num)
```

#デバッグ
デバッグエリアに出力する関数

```swift
let msg = "あいうえお"
println(msg)
print(msg)
```
###特殊なキーワード
下記のキーワードを記述するとそれぞれに対応した内容が吐出される

```swift
println(__FILE__) //現在のファイル名を表示
println(__LINE__) //現在の行数を表示
println(__COLUMN__) //現在のカラム数を表示
println(__FUNCTION__) //現在の関数・メソッド名を表示
```

#タプル
複数の値を１つの値として扱える。
配列と似ているが、値を追加・削除して値の個数を変えることはできない。
（値自体の変更なら可能）

```swift
var tap = ("あいうえお",30,"かきくけこ") //型を指定しない場合
var tap:(String,Int,String) = ("あいうえお",30,"かきくけこ") //型を指定する場合
```

##タプルの値へのアクセス
並び順のインデックス番号で値にアクセスできる

```swift
var tap = ("あいうえお",30,"かきくけこ") 
tap.0
tap.1
tap.2 = "さしすせそ" //書き換えも可能
```

ラベルをつけることもできる

```swift
var tap = (name:"あいうえお",num:30,addr:"かきくけこ") 
tap.name
tap.num
tap.addr = "さしすせそ"
```

##タプルの値の取り出し
タプルに設定した値は、変数や定数を用意してあげることで取り出せる

```swift
var tap = (2800,80)
var (price,tax) = tap

var (price, _) = tap //ワイルドカードを使って必要な値だけ取り出すことも可能。この場合、priceに対応した値のみ取り出せる
```

#ループ処理

```swift
//最終値を含む場合
for 変数名 in 開始値...最終値{
 //処理内容
}
//最終値を含まない場合
for 変数名 in 開始値..<最終値{
 //処理内容
}

//例
for num in 1...50{
 println(num)
}
```
※自動で変数はカウントアップされる

##配列から値を取り出す
配列からひとつづつ取り出して、変数にセットする

```swift
for 変数名 in 配列名{
}

//例
for num in numList{
 println(num)
}
```

##辞書（連想配列）のキーだけ取り出す

```swift
for 変数名 in 辞書名.keys{
}

//例
for keyName in numList.keys{
 println(keyName)
}

//ちなみに値だけ取り出す事もできる
for val in numList.values{
 println(val)
}
```

#文字列に関して

##文字列の連結
`+`で連結

```swift
var str1 = "あいうえお"
var str2 = "かきくけこ"
var str3 = str1 + str2
```

##文字列の比較

```swift
if(str1 == str2){
}
```

##文字数カウント
半角全角など問わず、１文字とカウントされる

```swift
let str = "あいうえお^^;"
let num = countElements(str)
println(num)
```

##文字列を数値へ変換
`toInt()!`で数値へ変換できる。変換できるのは整数のみ。

```swift
let str = "12345"
let num = str.toInt()!
```

##小数点のある数字を数値へ変換
`NSString`にキャストしてから、`floatValue`プロパティにアクセスする

```swift
let str = "123.45"
let fl = (str as NSString).floatValue
```

##数値を文字列に変換
`description`で変換。
整数なら`String()`でも可能。

```swift
let num = 12345
let str = num.description

let str = String(num)
```

##文字列を検索する
`find()`で検索。検索された位置のIndexが返ってくる。なければnil(null)。

```swift
let str = "あいうえお"
let findIndex = find(str, "う")
```

##文字列の挿入
`insertString()`を使う

```swift
let str = "あいうえお"
str.insertString("かきく", atIndex:3) //3文字目の後ろに挿入される
```

##文字列の削除
`deleteCharactersinRange()`を使う

```swift
let str = "あいうえお"
str.deleteCharactersinRange(NSMaskRange(1,4)) //2文字目から4文字分を削除
```


#配列
型を限定せずに混在させた配列を作るとNSArrayクラスの配列になる

```
let 配列名 = [値1,値2,値3]
var 配列名 = [値1,値2,値3]
let 配列名[値の型] = [値1,値2,値3] //型を指定（限定）する場合

//例

let arr = [1,"あいうえ",(180,200)]
let arr[AnyObject] = [1, "あいう", 30] //複数の型を指定する場合はAnyObject型を指定する
```

#画像の表示

```swift
let rect = CGRectMake(0,0,300,200) //縦表示位置座標、横表示位置座標、横幅、縦幅
let imageView = UIImageView(frame: rect) //表示領域を指定してImageViewを生成
imageView.contentMode = UIViewContentMode.ScaleAspectFit //ScaleAspectFitは画像の縦横サイズを保ったまま、表示領域にフィットさせる
imageView.image = UIImage(named: "logo.jpg") //画像ファイル名指定してセット



```


#参考サイト
https://sites.google.com/a/gclue.jp/swift-docs/ni-yinki100-ios/coreimage/hua-xiangnofiruta-chu-li-sepia



#WEBサービスを作るまでの「全て」を一貫して学べるオンライン動画総合学習サービス『ウェブカツ！！』

様々なプログラミング学習サイトやサービスでは正直な所、自分でWEBサービスを作れるようにはならないため、「自分でWEBサービスを作れるようになる！」をゴールとしたオンライン動画総合学習サービス『ウェブカツ！！』を立ち上げました。興味ある方は登録よろしくお願いいたします。
http://webukatu.com/


・・・続く