IOS/Swift

    [Swift] Struct와 Class의 차이는 무엇인가?

    [Swift] Struct와 Class의 차이는 무엇인가?

    Struct와 Class의 차이 Struct와 Class는 데이터 저장 방식, 가변성(Mutability), 상속 측면에서 다르다. 첫 째, Struct는 그 자체로 값으로 저장이 되지만 Class는 변수에 객체에 대한 주소값을 저장한다. 둘 째, Struct는 기본적으로 Immutable하지만 Class는 Mutable하다. 때문에 Struct의 내부 변수값을 바꾸기 위해서는 mutating이라는 강제로 mutability를 부여하는 접두어를 붙여야 한다. 셋 째, Struct는 상속이 불가능하지만, Class는 상속이 가능하다. 이는 불변성의 연장선으로 볼 수 있다. 데이터 저장 방식 struct의 데이터는 그 자체가 값으로 저장이 된다. 따라서 기존 struct가 새로운 struct에 할당되면 기존..

    [Swift] struct 내부에서 변수값 변경하기

    [Swift] struct 내부에서 변수값 변경하기

    struct의 immutability struct는 한 번 생성자를 초기화하면 struct 내부에서는 var 로 선언되더라도 프로퍼티의 값을 바꿀 수 없게된다. 예를 들어 아래와 같이 struct Person에 addAge를 하는 코드를 넣어본 후 실행해보자. struct Person { let name: String var age: Int let temperature: Float init(_name: String, _age: Int, _temperature : Float) { name = _name age = _age temperature = _temperature } func addAge() { age += 1 } } 아래와 같이 age가 immutable 하다는 warning이 뜬다. 이유는 초기화..

    [Swift] struct 한 번에 정리하기

    [Swift] struct 한 번에 정리하기

    struct란? struct는 클래스의 특별한 형태로, 데이터를 저장하기 위해 만들어지는 특별한 클래스이다. struct를 사용해 여러 변수들을 결합해 하나의 타입을 만들 수 있다. *자바의 POJO나 코틀린의 data class와 같다. struct만들기 struct는 다음 세가지 원칙을 이용해 만들어진다. struct에서 결합되는 변수들은 property라 부른다. struct 내부에 func을 넣을 수 있다. 생성자를 사용해 struct를 초기화 할 수 있으며 커스텀 생성자는 init()함수를 이용해 만들 수 있다. 위 세가지를 적용하면 Struct는 다음과 같이 만들어진다된다. 각 변수(property)에 이름을 부여할 수 있어 가독성이 좋아진다. struct StructName { let pro..

    [Swift 제어문] switch case 사용해 다중 조건 처리하기

    [Swift 제어문] switch case 사용해 다중 조건 처리하기

    switch case문 이란? switch case 문은 많은 분기를 처리하기 위해 만들어진 문법이다. switch 문의 필요성 if else 문으로 다양한 조건을 처리하려면 else if 를 무한 반복해야 하는데 이는 가독성을 매우 떨어트린다. if value == "A" { print("value is A") } else if value == "B" { print("value is B") } else if value == "C" { print("value is C") } ... 프로그래밍은 가독성이 매우 중요하므로, 분기가 4개 이상인 상황에서는 다음과 같이 switch case 문을 사용해 분기를 처리하는 것이 좋다. let value = "Hello Swift" switch(value){ case..

    [Swift 제어문] if 문 다루는 방법 한 번에 정리하기

    [Swift 제어문] if 문 다루는 방법 한 번에 정리하기

    if문이란? if문이란 제어구조의 일종으로 조건을 만족하면 if문제 종속된 블록을 수행하고 조건을 만족하지 못하면 수행을 하지 않도록 하는 프로그래밍 문법을 뜻한다. Swift의 if문 Swift의 if문은 다음의 구조를 따른다. if부터 '{' 전까지 괄호 없이 Condition을 써야 하며, '{ }' 로 감싸진 블록에 수행할 함수를 넣는다. if Condition { Block } 예를 들어 다음과 같이 사용할 수 있다. let value = "DBlog" if value == "DBlog" { print("value is DBlog") } 위 코드를 수행하면 결과는 다음과 같다. else if 문 사용해 여러 조건 만들기 여러 조건을 사용하려면 를 치려면 else if 문을 사용하면 된다. 앞에 ..

    [Swift] Optional을 다루는 다양한 방법 : nil 다루기

    [Swift] Optional을 다루는 다양한 방법 : nil 다루기

    Optional을 다루는 것이 필요한 이유 nil 이 가능한 타입을 다루기 위해서 Swift는 Optional을 사용한다. 하지만 Optional로 값이 오게 되면 Optional로 감싸여 있어 그 안에 있는 값을 사용하기 위해서는 Optional을 제거해야 한다. 이번 글에서는 다음의 dictionary를 사용해 Optional 타입의 변수가 들어왔을 때 어떻게 처리해야하는지에 대해 알아볼 것이다. let dictionary : [String : Int] = ["A" : 0, "B" : 1, "C" : 2] ! 을 이용한 옵셔널 강제 제거 첫 째로 !을 이용해 Optional을 강제 제거하는 방법이 있다. 예를 들어 아래와 같이 dictionary에서 값이 Optional로 오는 상황을 가정해보자. d..

    [Swift] nil 과 Optional 이란 무엇인가?

    [Swift] nil 과 Optional 이란 무엇인가?

    nil이란? Swift에서는 변수에 객체가 할당되지 않은 상태를 nil이라 부른다. 기존 Object-C에서는 null과 nil이 모두 있었지만, Swift에서는 nil만 사용하므로 nil = null과 똑같이 사용된다고 보면 된다. Optional이란? Optional이란 nil이 될 수 있는 변수의 타입을 뜻한다. 다음과 같이 타입에 ?가 붙어있지 않으면 name이 null이 될 수 없는 타입이 된다. let name : String = "Dblog.tech" 하지만 응답 결과에 따라 값이 생성되지 않을 수 있는 값들은 nil 상태도 지원이 되게 만들어야 한다. nil이 될 수 있는 타입은 기존 타입에 '?'가 붙은 타입이다. var responseFromServer : String? = nil Op..

    [Swift] suffled 사용해 Array 순서를 랜덤으로 바꾸기

    [Swift] suffled 사용해 Array 순서를 랜덤으로 바꾸기

    suffled() 는 어떻게 동작하는가? Swift에는 suffled라 불리는 셔플링 함수가 있다. suffled를 사용하면 변환된 Array가 반환된다. 단 원래 Array는 그대로 남아있는다. Array.shuffled() 예시 예를 들어 다음과 같은 (0...10) Array에 셔플링을 하는 코드를 만들어보자. let array = 0...10 let suffledArray = array.shuffled() print("Array: \(array)") print("Suffled Array: \(suffledArray)") 위에서 array값은 바뀌지 않는다. 하지만 suffledArray는 셔플링된 값이 나온다.

    [Swift] Random 값을 뽑아내는 다양한 방법 : Random 숫자, Collection Random 값 뽑기

    [Swift] Random 값을 뽑아내는 다양한 방법 : Random 숫자, Collection Random 값 뽑기

    random함수를 이용해 Random한 숫자 뽑아내기 Random한 Int 값을 뽑기 위해서는 random 함수를 이용하면 된다. Random Int 값 뽑기 Int.random(in: 0...10) Random Float 값 뽑기 Float.random(in: 0...10) randomElement이용해 Collection으로부터 Random 값 뽑아내기 randomElement를 이용해 Collection으로부터 Random 값을 뽑아낼 수 있다. Array.randomElement() List.randomElement() 단, output 값은 nullable한 Optional 값으로 나온다.

    Swift의 var과 let의 차이는 무엇인가?

    Swift의 var과 let의 차이는 무엇인가?

    var과 let의 차이는 무엇인가? var은 설정된 값이 변할 수 있는 가변 변수이고 let은 설정된 값이 변할 수 없는 불변 변수이다. var : 가변(Mutable) 변수 var은 설정된 값이 변할 수 있는 변수이다. 예를 들어 아래와 같이 a를 var로 선언하고 reassign하는 코드를 실행했다고 해보자. var a = 1 print("a: \(a)") a = 3 print("[changed] a: \(a)") a의 값은 1에서 3으로 바뀌고 바뀐 a값이 프린트 될 것이다. let: 불변(Immutable) 변수 let은 설정된 값이 변할 수 없는 변수이다. 예를 들어 아래와 같이 a를 let로 선언하고 reassign하는 코드를 실행했다고 해보자. let a = 1 print("a: \(a)")..