Swiftの型
続いて、基本的な内容を見ていきます。
SwiftはObjective-Cと型の表現が変わりました。
よく使う型を見て行きましょう。
1
2
3
4
5
6
7
8
9
| var intValue:Int = 3
var doubleValue:Double = 1.234
var floatValue:Float = 5.678
var boolValue:Bool = true
var stringValue:String = "abcdefg"
var charValue:Character = "a"
var intArray = [1, 30, 120, 6]
var stringArray = ["abc", "123"]
var testDictionary = ["job": "programmer", "skillNum": 5]
|
因みにこれをObjective-Cで書くと
1
2
3
4
5
6
7
8
9
| NSInteger intValue = 3;
CGFloat doubleValue = 1.234;
CGFloat floatValue = 5.678;
BOOL boolValue = YES;
NSString *stringValue = @"abcdefg";
char charValue = "a"
NSArray *intArray = @[1, 30, 120, 6];
NSArray *stringArray = @[@"abc", @"123"];
NSDictionary *testDictionary = @{@"job": @"programmer", @"skillNum": @5};
|
CGFloatで定義されたdoubleValue
とfloatValue
はdouble
, float
をそれぞれ書くこともできます。
(ここは32bit, 64bit問題のため、安全側に倒すためにCGFloat
に統一して書いています。)
Swiftでクラスを作成
さて、新たにSwiftファイルを追加して、カスタムクラスを実装してみましょう。
まずは、Objective-Cと同様で、左メニューのフォルダを右クリックして、『New File』を選択します。
そして、iOS > Source > Swift Fileを選択します。
Objective-Cと違って、どのクラスを継承するか否かを決めるフェーズはありません。
ファイル名と保存場所を決めるのみです。
作成されるファイルの内容は下記になります。
ここにカスタムクラスを実装していきましょう。
例えば下記のようなクラスを作ります。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| class Engineer:NSObject {
// プロパティの定義
var level:Int = 1
var businessTitle:String = "新米エンジニア"
var skill:Array<String> = ["Swift"]
// メソッドの定義
// レベルアップ処理
func levelUp() ->Int {
return level++
}
// 新規スキルをセットする処理
func addNewSkills(newSkill:String) {
skill.append(newSkill)
}
// 新たな肩書をセットする処理
func updateBusinessTitle(title:String) {
businessTitle = title
}
}
|
上記のクラスでは NSObject クラスを継承しています。逆に言えばEngineerクラスのスーパークラスは NSObject クラスということです。
Engineerクラスにはlevel
, businessTitle
, skill
という3つのプロパティを定義しています。(全てに初期値を与えています。)
また、levelUp()
, addNewSkills(newSkill:String)
, updateBusinessTitle(title:String)
の3つのクラス・メソッドを定義しています。
では、実際にカスタムクラスを使ってみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| // 呼び出す側のswiftファイル(ViewController.swift)
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// カスタムクラスの初期化
var engineer:Engineer = Engineer()
// プロパティの初期値をログ出力
println("Engineer level : \(engineer.level), businessTitle : \(engineer.businessTitle), skill : \(engineer.skill)")
// 各メソッドを実行
engineer.levelUp()
engineer.addNewSkills("Objective-C")
engineer.updateBusinessTitle("iOSアプリエンジニア")
// プロパティをログに再出力
println("Engineer level : \(engineer.level), businessTitle : \(engineer.businessTitle), skill : \(engineer.skill)")
}
<省略>
}
|
ここで気になるのが、自作したクラスを使うときにimport
をしていないという点です。
同プロジェクト内のクラスはimport
の必要がないということらしいです。
なので、自作したクラスをCocoaPodでインストールした場合はimport
の必要があると思われます。
基本的なところで微妙にObjective-Cと異なる部分があるので注意が必要ですね。
と言ったところで本日はここまで。