Swift学習三


Swiftは、集合、配列、辞書を格納する2つの集合タイプを提供します.配列は、同じタイプのシーケンス化リストの集合です.ディクショナリは、キーに類似した一意の識別子を使用して値を取得できる非シーケンス化されたセットです.Swiftでは、配列と辞書のキーと値がそのタイプを明確にする必要があります.これは、この配列と辞書がエラーのタイプの値を挿入しないことを意味します.これは、配列や辞書で数値を取り戻すと、そのタイプを特定できることを意味します.Swiftは、特定の集合タイプを使用して、コードの動作がエラーにならないことを保証し、開発段階でエラーをより早くキャプチャすることができます.
1、配列
Swift配列は決定された値を格納しており,このObjective-CにおけるNSArrayとNSMutableArrayクラスには違いがある.これらは、さまざまなオブジェクトが格納されているため、オブジェクトに関する具体的な情報は提供されません.Swiftでは、決定された宣言でも暗黙的な宣言でも、配列はそれ自体がどのようなタイプを格納しているかを非常に決定し、必ずしもクラスオブジェクトを格納する必要はありません.だからSwift配列はタイプが安全で、それはずっとそれ自身が含むことができる値を確定しているからです.
        //     
        let array1:String[]=["a","b"];
        
        //           (  var    )     (  let    )
        var array2:String[]=["aa","bb"];
        
        //        
        var array3=String[]();
        
        //Swift                             。                    ,       count,       repeatedValue
        var array4=Int[](count:3,repeatedValue:0);
        
        //array2    ,      
        array2.append("cc");
        //     +=       
        // array2+="cc";
        
        println(array2);

        /*
        *    
        *[aa, bb, cc]
        */
        
        //          
        var yuansu1=array2[0];
        
        println(yuansu1);
        /*
        *    
        *aa
        */
        
        //            
        array2[1...2]=["ee","ff"];
        println(array2);
        /*
        *    
        *[aa, ee, ff]
        */
        
        //           
        array2.insert("oo",atIndex:0);
        println(array2);
        /*
        *    
        *[oo,aa, ee, ff]
        */
        
        //          
        array2.removeAtIndex(0);
        println(array2);
        /*
        *    
        *[aa, ee, ff]
        */

        //          
        var lastyuansu=array2.removeLast();
        
        //    
        for item in array2
        {
        
        
            println(item);
            
        
        }

2、辞書
Swift辞書には、Objective-CのNSDictionaryとNSMutableDictionaryとは、様々なオブジェクトをキーと値として使用し、オブジェクトに関する具体的な情報を提供しないため、特定のタイプのキーと値が格納されます.Swiftでは、明示的に宣言されたタイプでも暗黙的に推定されたタイプでも、特定の辞書に対して格納できるキーと値が決定されます.Swiftの辞書の書き方はDictionaryで、KeyTypeはあなたが保存したいキーで、ValueTypeはあなたが保存したい値です.唯一の制限はKeyTypeがハッシュ可能(hashable)でなければならないことです.それは、それら自身が独立して識別されるように形式を提供することです.Swiftのすべての基礎タイプ(例えば、文字列(String)、整形(Int)、二重精度(Double)、ブール(Bool))は、ハッシュ可能であることを黙認しています.(hashable)、およびこれらのタイプは、辞書のキーとしてよく使用されます.メンバー値を列挙するのにアシスト値(associated values)(具体的にはEnumerations)を必要としないのも、デフォルトでもハッシュ可能であるためです.
        //       
        let dict1:Dictionary<String,String>=["Name":"yu","Age":"26"];
        //     ,                    ,           。
        var dict2:Dictionary<String,String>=["Name2":"yu","Age2":"26"];
        //       
        var dict3=Dictionary<String,String>();
        //   ,     key   ,       
        dict2["Sex"]="nan";
        /*
        *    
        *[Name2: yu, Age2: 26, Sex: nan]
        */
        //  
        dict2["Sex"]="n";
        
        println(dict2);
        /*
        *    
        *[Name2: yu, Age2: 26, Sex: n]
        */
        
        //  ,      updateValue(forKey:)                  .           , updateValue(forKey:)                ,            ,        , updateValue(forKey:)         ,        rThis enables you to                 。
        if let oldValue = dict2.updateValue("wang", forKey: "Name2")
        {
        
        
            println(dict2);
            
        }
        /*
        *    
        *[Name2: wang, Age2: 26, Sex: n]
        */
        
        //       
        if let value = dict2["Age2"]
        {
            println(value);
            
        } else
        {
            println("no exsit")
        }
        
        //                nil,        
        dict2["Sex"]=nil;
        println(dict2);
        /*
        *    
        *[Name2: yu, Age2: 26]
        */

        //  ,                 removeValueForKey  ,              ,        ,        ,    nil。
        if let removedValue = dict2.removeValueForKey("Age2")
        {
           println(dict2);
            
        } else
        {
            println(dict2);
        }
        
        //    
        for(key,value) in dict2
        {
        
            println("\(key):\(value)");
            
        
        }