このページは「Nilかもしれないプロパティ」のサンプルコードです。

本文の続きを読む

//
//  ViewController.swift
//  MyApp
//
//  Created by Shimizu Miki on 2014/07/31.
//  Copyright (c) 2014年 Shimizu Miki. All rights reserved.
//

import UIKit

class Tour{

    let name:String

    var bass:Musician?
    var drums:Musician?

    var message = ""

    init(name:String){
        self.name = name
        message = "\(name)です。\n"
    }

    func addBass(bassist:Musician){

        bass = bassist
        bass!.tour = self
        message += "ベースに\(bass!.name)さんが参加しました。\n"

    }
    func addDrums(drummer:Musician){

        drums = drummer
        drums!.tour = self
        message += "ドラマ−に\(drums!.name)さんが参加しました。\n"
    }

    func delBass(){

        bass = nil
        message += "ベーシストが脱退しました。\n"
    }


    func delDrums(){

        drums = nil
        message += "ドラマ−が脱退しました。\n"
    }


    func reportMember()->String{

        if(bass == nil){
            message += "ベースは決まっていません。"

        }else{
            message += "ベースは\((bass!).name)さん。"
        }
        if(drums == nil){
            message += "ドラムは決まっていません。"

        }else{
            message += "ドラムは\((drums!).name)さん。"
        }
        return message + "\n"
    }



}

class Musician{
    let name:String
    var part:String
    var tour:Tour?

    init(name:String, part:String){
        self.name = name
        self.part = part
    }

    deinit{
        if(tour != nil){
            tour!.message += "\(name)さんは都合により休業します。\n"
        }
    }
}


class ViewController: UIViewController {


    @IBOutlet weak var resultText: UITextView!

    override func viewDidLoad() {
        super.viewDidLoad()

        var myStr = ""

        let us2014 = Tour(name:"2014アメリカ横断スーパーツアー")
        us2014.addBass(Musician(name:"トニー", part:"ベース"))
        us2014.addDrums(Musician(name:"ビル", part:"ドラム"))

        us2014.delBass()



        myStr = us2014.reportMember()

        resultText.text = myStr

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}


本文の続きを読む