Swift-単純値

4935 ワード

記事はThe Swift Programming Languageに基づいてまとめられていますが、今日は基本的なデータ型について学びます.ここでは宣言変数の2つのキーワード、letおよびvar、および let
letは定数を宣言し、付与は一度で完了し、付与は変更できません.OCのconstに相当します.
**例:**
OC: NSString * const name = @"    ";
swift: let constantV = 50

**注目すべきは、letはvarキーワードのようにタイプを自動的に判断するものではないので、letで宣言する場合、初期値がない場合は、変数の後にタイプを宣言し、コロンで**を分割することです.
**例:**
let constantV: Double = 50

var
varは変数を宣言して、しかもいかなるタイプで、あなたが値を与えるのが異なっているため、警告や間違いが発生することを心配する必要はありません.コンパイラは自動的にどんなタイプかを判断して、一言をまとめて、いつも修正する変数であれば、これを使います.
**例:**
var stringV = “     ” //              
var floatV = 0.5   //          

**ただし、2つのキーワードはOC重量の可変(NSSting)と可変(NSMutablesString)として完全に理解できません.ocでは、NSStingは値**を変更することもできます.
文字列String
宣言文字列とOCの違いは@記号がなくJavaと同じです
let StringL = “     ”
var StringV = “     ”

使用Stringの理由
  • String構造体で、性能が高い
  • String現在はNSStringの機能が圧倒的多数ある
  • String直接遍歴対応
  • NSString1つOC対象、性能がやや劣る
  • Swift提供StringNSStringの間のシームレスな変換
  • よく使われるいくつかの方法
    つづり文字列
    OC
    NSString *str = [NSString stringWithFormat:@"%@%@", @"  ", @"   "];
    
    NSString *str = @"  ";    
    NSString *newStr = [str stringByAppendingString:@"   "];
    

    **しかし、swiftでは2つの文字列の間に+を付けるだけでつなぎ合わせることができます.Javaのように**
    let stringL = "  " + "    "
    
    let stringL = "\(str) \(str) "
    

    数値を文字列に変換
    **OCでは、数値をnumberタイプ**にカプセル化するのが一般的です.
    NSInteger intV = 10;
    NSString *str = [NSString stringWithFormat:@"%@",@(intV)];
    NSNumber *number = [NSNumber numberWithInteger:intV];
    NSString *str = [number stringValue];
    

    **swiftでString(数値)メソッドを呼び出す**
    let strA =  “A”
    let intB = 10
    let strL = strA + String(intB)
    

    **または別の書き方、反スラッシュ()**
    let strL = strA + "\(intB)”
    let strL = @“     :\(intB)"
    

    遍歴文字列
    let str = "    "
    for s in str {
        print(s)
    }
    

    配列と辞書
    **は[]配列と辞書を作成するために使用します. およびkey値を使用して要素にアクセスし、最後の要素にカンマ**を付けることができます.
    **配列内の要素は一致している必要があります.Swift格納されているのはStringはいれつ
    配列の初期化
    ** oc: **
    //空の配列
    NSArray *arrary = @[];
    //     (  )
    NSArray *arrary = @[];
    

    //空ではない
    NSArray *arrary = @[@"A", @"B", @"C"];
    

    ** swift: **
    //空の配列
    var arratrV = []
    

    //要素タイプ(フィールド列、配列格納を宣言するタイプ)
    var arratrV = [String]()
    

    //空ではない
    var arratrV = ["A", "B", "C"]
    

    **同じ点:下付きの要素を使用**
    NSString *str0 = arrary[0];
    var str0 = arraryM[0];
    

    配列によく使われるいくつかの方法
  • 添加元素
  • array.append("lisi")
    
  • 要素削除
  • array.removeAtIndex(1)
    
  • すべての要素を削除
  • array.removeAll(keepCapacity: true)
    
  • 遍歴
  • for i in 0..<10 {
        array.append("\(i)")
        print("\(array) --- \(array.capacity)")
    }
    
  • 接合配列
  • var array2 = [String]()
    array2.append("1")
    array2.append("2")
    //     
    array += array2
    

    辞書
    辞書の初期化
    ** oc: **
    //空き辞書
    NSDictionary *dict = @{};
    

    //空ではない
    NSDictionary *dict = @{@"name": @"daisuke",  @"age" : @(10)};
    

    ** swift: **
    //空き辞書
    var dict V = []
    

    //要素タイプの宣言
    var dictV = [String : Float]()
    

    //空ではなく、要素タイプを宣言しない
    var dict V= ["name" : "daisuke", "age" : 10]
    

    **同一点:keyを使用して要素にアクセス**
    NSString *name = [dict objectForKey:@"name”];
    var name = dict["name"]
    

    辞書でよく使われるいくつかの方法
  • 辞書の定義とインスタンス化
  • var dict = [String: AnyObject]()
    dict["name"] = "daisuke"
    dict["age"] = 23
    
  • 同じキーを設定すると、前の値が上書きされる
  • dict["name"] = "alex"
    
  • あるkeyを削除
  • dict.removeValueForKey("age")
    
  • 辞書遍歴(k,vは自由に書ける)
  • for (k, v) in dict {
        print("\(k) -- \(v)")
    }
    
  • 併合辞書
  • var dict2 = ["name": "wangwu", "age": 80, "title": "boss"]
    for (k, v) in dict2 {
        dict.updateValue(v, forKey: k)
    }
    

    詳細は個人サイトdaisukeをご覧ください