Takahiro Octopress Blog

-1から始める情弱プログラミング

Swiftの基礎を理解しよう!(2)

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で定義されたdoubleValuefloatValuedouble, floatをそれぞれ書くこともできます。
(ここは32bit, 64bit問題のため、安全側に倒すためにCGFloatに統一して書いています。)

Swiftでクラスを作成

さて、新たにSwiftファイルを追加して、カスタムクラスを実装してみましょう。
まずは、Objective-Cと同様で、左メニューのフォルダを右クリックして、『New File』を選択します。

New File

そして、iOS > Source > Swift Fileを選択します。

Add Swift File

Objective-Cと違って、どのクラスを継承するか否かを決めるフェーズはありません。
ファイル名と保存場所を決めるのみです。

Save Swift File

作成されるファイルの内容は下記になります。

1
import Foundation

ここにカスタムクラスを実装していきましょう。
例えば下記のようなクラスを作ります。

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と異なる部分があるので注意が必要ですね。
と言ったところで本日はここまで。

Comments