概要
毛嫌いしていたSwiftをついに触り始めました。
アプリを実際に作りながら学んでいるのですが、超基本的な部分の書き方を自分の為にもメモしておきます。
そろそろSwiftやり始めるか…!という人の為になれば幸いです。
変数/定数宣言
// 変数
NSString *name1 = @"mizuno";
// 定数
const NSString *name2 = @"takagi";
// 変数
var name1 = "mizuno"
var name1: String = "mizuno" //型も指定出来ます
var name1: String? // optional型での宣言方法
var name1: String! // optional型での宣言方法
// 定数
let name2 = "takagi"
ポイント
・Swiftは型指定無しでも変数/定数宣言出来ます(型推論)
・「*」はいらなくなりました
差に驚いたこと
・Stringの時に「@」を付けなくても良くなった
・そもそもセミコロンつけなくても良い
・「var」で宣言した変数に値を代入を一度もしないと「letにしろ!」って怒られる
・「?」とか「!」とかついてる!
optional型について
Swiftが良いとされている理由の1つがこのoptional型であり、これがあることで
堅牢なコードがかけると言われています。
これについては書くとめちゃくちゃ長くなるので、私が参考にしてわかりやすかったページを載せておきます。
・どこよりも分かりやすいSwiftの"?"と"!"
http://qiita.com/maiki055/items/b24378a3707bd35a31a8
・[Swift] Optional型についてのまとめ
http://qiita.com/cotrpepe/items/e30c7442733b93adf46a
結構ややこしいのですが、optional型は「包み紙」という表現が結構自分の中ではしっくりきているので、それをイメージするとすごくわかりやすいかもしれません。
関数
- (BOOL)isValid:(NSString *)word {
return NO;
}
- (void)didTapButton {
if(![self isValid:word])
return;
}
func isValid(word :String) -> Bool {
return false
}
func didTapButton() {
if !self.isValid(word) {
return
}
}
ポイント
・引数と返り値を書く場所が違うので注意
・メソッドの呼び出し方が違うので注意
差に驚いたこと
・Swiftではoverrideしているメソッドはfuncの前にoverrideをつけないとオーバーライドしていることにならないので必ずつけなければならない
・Swiftでは返り値を省略して書ける(でも引数はvoidの場合()で書かないとだめっぽい)
・if文の{ }を省略できない
クラス
@interface MyClass : NSObject<MyDelegateSampleDelegate>
@end
/* クラスの実装部 */
@implementation MyClass : NSObject
@end
class MyClass:MyDelegateSampleDelegate{
}
ポイント
・Swiftは.hと.mがわかれていない
・プロトコルなどはclass宣言の後に書く
差に驚いたこと
・書き方が結構違うので最初普通に戸惑う(property宣言とかないし)
終わりに
基本的なiOSの動きは変わっていないので、記法だけ慣れてしまえばある程度書けそうです!
(実際にアプリもかんたんなサンプルはすぐに作れました)
ただSwiftで出来る事が結構増えた気がするので、そこをしっかり抑えると
よりイケてるコードが書けそう。。
optional型については結構理解がしんどいかもしれませんが、
いろんな解説サイトを巡回したり、実際に書いて出るエラーを読んで潰そうと動かしてみるのが
理解を深めるのに良さそうです!