iOS 6強SWIFTの収集


Collection:変数の管理方法
  • Array
  • Dictionary
    //必要なコンセプト
  • Set
  • Closure
  • 1. Array


    データを順番に保存できる
    すべての勘定科目は同じタイプでなければなりません.
    ✔▼順番あり(順番:index、0から)

    Arrayはいつ使えばいいですか?
    1.順序のあるもの
    2.物の順番がわかるとき

    アレイの作成方法


    1️⃣
    var evenNumbers: [Int] = [2,4,6,8]
    2️⃣
    let evenNumbers: Array <Int> = [2,4,6,8]

    arrayに追加する方法

    evenNumbers.append(10) //evenNumbers를 let으로 만드는 경우 오류남

    複数追加


    1️⃣
    evenNumbers += [12, 14, 16]
    2️⃣
    evenNumbers.append(contentsof:[18,20])

    arrayプロパティの使用


    1」空か確認する方法
    let isEmpty = evenNumbers.isEmpty // False
    evenNumbers = [] //비워짐
    2πジルコニウム元素はいくつありますか?
    evenNumbers.count
    3▼▼▼最初の要素をチェック(最後の要素をチェック)
    print(evenNumbers.first) 
    //optional로 반환됨
    //evenNumbers가 빈 어레이이면 first 값이 nil이 되기 때문에 항상 first값이 존재한다고 장담할 수 없음
    
    print(evenNumbers.last) 
    -> optional binding
    if let firstElement = evenNumbers.first {
        print("---> first element: \(firstElement)")
    }
    最小値と最大値の決定
    evenNumbers.min()
    evenNumbers.max()
    //둘 다 optional
    4要素のインポート
    var firstItem = evenNumbers[0]
    var secondItem = evenNumbers[1]
    //index로 값 가져오면 됨
    //없는 index의 element 가져오려고 하면 에러남
    5️⃣ range type
    let firstThree = evenNumbers
    let firstThree = evenNumbers[0...2]
    //0,1,2번째 index의 값 가져옴
    6"""
    evenNumbers.contain(3) //False
    evenNumbers.contain(4) //True
    7▼▼▼▼新しい値を追加(既存のインデックスで)
    evenNumbers.insert(0, at:0)
    //기존 element들은 다 뒤로 밀림
    8」要素消去法
    evenNumbers.removeAll()
    evenNumbers = []
    
    evenNumbers.remove(at:0)
    //특정 index 삭제
    変更9」の値
    evenNumbers[0] = -2
    evenNumbers[0...2] = [-2, 0, 2]
    🔟 逆順
    evenNumbers.swapAt(0,1)
    //0과 1, 두 인덱스 값을 서로 바꿔치기함
    1▼▼1▼▼▼▼loopを使う
    for num in evenNumbers {
        print(num)
    }
    
    for (index,num) in evenNumbers.eumerated(){
        print("idx: \(index), value: \(num)")
    }
    //enumerated 함수는 (index, value)로 이루어진 tuple을 리턴하는 함수
    それ以外は
    evenNumbers.dropFirst(3)
    //앞에 3개 빼고 보여줘 (실제 array에는 영향 안끼침)
    evenNumbers.dropLast()
    //괄호 안에 아무것도 없으면 1
    evenNumbers.prefix(3)
    //앞의 3개만 가져오기
    evenNumbers.suffix(3)
    //뒤의 3개만 가져오기

    2. Dictionary


    めいめいたんい
    key -> value
    keyは唯一でなければならない
    cf)DictionaryとArray(シーケンスディスク)

    辞書の作り方


    1️⃣
    var scoreDic: [String:Int] = ["Jason":80, "Jay":95, "Jake":90]
    //String:Int = key:value
    2️⃣
    var ScoreDic: Dictionary <String, Int> = ["Jason":80, "Jay":95, "Jake":90]
    ScoreDic["Jason"] //80
    ScoreDic["없는 값"] //nil
    //optional

    dictionaryプロパティの使用


    1」空の方法
    scoreDic = [:]
    2▏▏▏▏▏▏▏
    scoreDic.isEmpty
    3ππ項目カウント
    scoreDic.count
    4▼既存項目の更新
    scoreDic["Jason"] = 99
    5▼▼▼▼項目を追加
    scoreDic["Jack"] = 100
    6πエントリの削除
    scoreDic["Jack"] = nil
    7️⃣ for loop
    for (name, score) in scoreDic {
        print("\(name), \(score)")
    }
    
    for key in scoreDic.keys{
        print(key)
    }

    3.Set


    重複しないユニークなアイテムを使用する場合+順序が重要でない場合

    setの作成

    var someSet: Set<Int> = [1,2,3,1]
    //{2,3,1} -> 중복된 값은 삭제하고 보여줌

    setプロパティの使用

    someSet.isEmpty
    someSet.count
    someSet.contains(4) // False
    someSet.insert(5)
    someSet.remove(1)

    4. Closure


    名前のないメソッド、関数
    機能を実行するコードブロックの特殊なタイプ->正確には、関数は閉パッケージのタイプです.

    閉じて何の役に立つんだ?業務上どのように使用されていますか?

  • Completion Block
    :いくつかの操作が終了した後に実行する必要がある場合に使用します(closureはいくつかの操作を実行することを指します).

  • High order Functions
    :input受信関数として使用できる関数(closureをinputとして使用)
  • closureタイプ


  • 単純閉鎖
  • let choSimpleClosure = {
    
    }
    choSimpleClosure()
  • コードブロック
  • let choSimpleClosure = {
        print("closure 입니다")
    }
    choSimpleClosure()
  • 入力パラメータ受信モジュール
  • let Closure: (String) -> Void = { name in
        print("이름은 \(name)입니다")
    }
    //void: output이 없다는 뜻
    Closure("린다")
    は、
  • の値
  • を返します.
    let Closure: (String) -> String = { name in
        let message = "\(name)"
        return message
    }
    
    let result = Closure("린다")
  • パラメータで閉パケットを受け入れる関数
  • func thisFunction(closure:() -> Void) {
        print("closure")
        closure() //이걸 꼭 추가해야함
    }
    
    thisFunction(closure: {
        print("closure")
    })
  • Trailing Closure
  • func Function(message: String, closure: () -> Void){
        print("\(message)")
        closure()
    }
    
    Function (message:"~~", closure: {
        print("~~")
    })
    
    Function(message:"~~") {
        print("~~")
    }

    closure基本概念

    var multiplyClosure: (Int, Int) -> Int = { (a:Int, b: Int) -> Int in
        return a*b
    }
    
    var multiplyClosure: (Int, Int) -> Int = {a,b in
        return a*b
    }
    
    var multiplyClosure: (Int, Int) -> Int = { $0 * $1 }
    
    let result = multiplyClosure(4,2)
    func operateTwoNum(a:Int, b:Int, operation: (Int,Int)->Int)->Int {
        let result = operation(a,b)
        return result
    }
    
    operateTwoNum(a: 4, b: 2, operation: multiplyClosure)
    
    var addclosure: (Int,Int) -> Int = {a,b in
        return a+b
    }
    
    operateTwoNum(a: 4, b: 2) { a,b in
        return a/b
    }

    capturing values


    closerがキャプチャされた場合は、範囲外で使用できます.
    let voidClosure: () -> Void = {
        print("iOS")
    }
    //input, output 없는 메소드 만들 수 있음
    
    var count = 0
    let incrementer = {
        count += 1
    }