水夫と戯れて

Appleの開発言語Swiftのことを書く。公開されている範囲内で書いています。文章に「?」が含まれているところはよく理解していないところ。

辞書(Dictionary)

目次>

Objective-CでDictionaryと呼ばれているもの。 他の言語では連想配列とか

    func function001() ->String {
        var members = [
            "鈴木さん": "部長",
            "山田さん": "課長",
        ]
        members["鈴木さん"] = "嘱託"
        
        return members["鈴木さん"]!
    }
    

    override func viewDidLoad() {
        super.viewDidLoad()
        
        NSLog("現在の役職 %@",function001())
    }

素数は .count プロパティ(?)

func function003()  {
        var myMembers = [
            "鈴木さん": "部長",
            "田中さん": "次長",
            "山田さん": "課長",
        ]
        myMembers["鈴木さん"] = "嘱託"
        
        for (theName, theTitle) in myMembers {
            println("\(theName): \(theTitle)")
        }
        
    }
//=>メンバーは3人です。

for in で(key,value)として値が渡される

var myMembers = [
            "鈴木さん": "部長",
            "田中さん": "次長",
            "山田さん": "課長",
        ]
        myMembers["鈴木さん"] = "嘱託"
        
        for (theName, theTitle) in myMembers {
            println("\(theName): \(theTitle)")
        }
/*
=>
山田さん: 課長
鈴木さん: 嘱託
田中さん: 次長
*/
オプショナル

nilになる可能性がある場合はオプショナル指定

func function004(){
        let myMembers = ["ant":6,"snake":0,"cheetah":4]
        let possibleLegCount: Int? = myMembers["aardvark"]
        
        if possibleLegCount == nil{
            println("Aardvarkは見つかりませんでした。")
            
        }
    }
NSDictionary

swiftのDictionaryではなくNSDictionaryを作ることも必要な場合があるので

    //NSApplication orderFrontStandardAboutPanelWithOptions
    @IBAction func function015(sender: AnyObject) {
        NSLog("orderFrontStandardAboutPanelWithOptions")
        let anApplication = MyApplication.sharedApplication()
        //アバウトパネルの情報表示用NSDictionaryを設定
        let panelDic:Dictionary<String, String> = ["Version" : "1.1", "Copyright" : "satoshi oomori"];
        //表示用
        for key in panelDic.keys{
            println("\(key) : \(panelDic[key])");
        }
        //アバウトパネルを表示
        anApplication.orderFrontStandardAboutPanelWithOptions(panelDic)
    }