하루에 0.01%라도 성장하자
반응형

SWIFT 20

Swift 구조체 (Struct)

Swift는 대부분의 타입이 구조체로 이루어져 있다. 구조체 (Struct) 구조체는 값(Value)타입이다. //구조체 선언 struct Sample { var tempVar1 : Int = 100; let tempVar2 : Int = 10; static var typeVar : Int = 200; // 타입 프로퍼티 func sampleFunc(){ print("Sample"); } static func sampleTypeFunc(){ // 타입 메소드 print("Type Func"); } } //구조체 사용 var tempStruct : Sample = Sample(); // 구조체 생성 tempStruct.tempVar1 = 300; // 300으로 변경. Sample.sampleTypeFun..

Develop/iOS 2019.05.08

Swift 옵셔널(Optional)

Swift의 핵심이라고 할 수 있는 옵셔널(Optional)이다. ( 이게 왜 핵심인지 나는 아직 잘 모르겠다... ㅋㅋ ) 옵셔널(Optional) 값이 있을수도, 없을 수도 있음을 표현함. nil이 할당될 수 있는지 표현 [ 옵셔널의 형태 ] enum Optional : ExpressibleByNilLiteral{ case none case some(Wrapped) } 옵셔널을 쓰는 이유 명시적 표현 nil의 가능성을 코드만으로 표현이 가능하다. ( 문서에 null가능 여부를 별도로 쓸 필요가 없다. ) 따라서 문서/주석 작성 시간 절약. 안전한 사용 전달 받은 값이 옵셔널이 아니라면 nil체크 없이 사용 가능 ( nil일 수가 없기 때문에 ) 예외 상황을 최소화 하는 귀찮지만 안전한 코딩 효율적 코..

Develop/iOS 2019.05.08

Swift 반복문

보편적 언어들의 반복문은 크게 세가지다 for while do - while Swift도 크게 다르지 않다. 다만 단어가 다를뿐 for while repeat - while for 우선 기본적으로 foreach문과 비슷한 문법을 가진다. let integers = [1,2,3]; for item in integers { print(item); // integers 배열안에 있는 item이 차례로 들어와 출력된다. } //Dictionary 일 경우에 아래와 같이 사용한다. for (name, age ) in people { print("\(name) : \(age)"); } 우리가 일반적으로 사용하던 방법은 Swift에서는 동작되지 않으며 아래와 같이 사용해야 한다. [ JAVA ] for(int i=0..

Develop/iOS 2019.05.08

Swift Swift의 Switch

Switft의 Switch는 일반 언어들과 조금 다르다. 따라서 사실 if나 switch문은 기본적인 것이라 포스팅을 안하려고 했는데, switch문의 문법이 조금 특이하여 포스팅을 한다. Switch문에는 default가 꼭 있어야 한다. 다른 언어는 switch문에 default가 있어도 되고 없어도 된다. 하지만 Switft는 default가 없는경우 에러가 발생한다. 이또한 nil 문제가 발생하지 않도록 언어적으로 제약을 걸어놓은것 같다. switch문에는 범위연산자가 있다. 이건 바로 소스를 보자. let num : Int = 100; switch(num){ case 1 : print("1"); case 1..

Develop/iOS 2019.05.08

Swift 함수

함수는 어느 언어에나 존재한다. 단지 그 문법이 다를뿐 매커니즘은 같다. 함수 사용법 아래 코드는 함수의 사용법을 정리한 것이다. func 함수이름(매개변수 이름 : 매개변수 타입, 매개변수 이름 : 매배변수 타입 ) -> 반환타입 { return 반환값 } // 일반적인 매개변수 2개와 Int형 반환 func func sum(a:Int, b:Int) -> Int{ return a + b ; } // 반환값이 없는 함수 // 반환값이 없는 경우 Void를 쓴다. func print(a:Int, b:Int) -> Void{ print(a+b); } // 매개변수가 없는 경우 func print() -> Int{ return Int.max; } //매개변수와 반환값이 없는경우 func hello() -> V..

Develop/Swift 2019.05.07

Swift 컬렉션 타입 ( Array, Dictionary, Set)

오랜만에 강의를 들어서 그런지... 진도도 빠르고.. 알아듣기 쉬운데 기분탓인가... 아직은 기초문법이라 그럴수도.. 컬렉션 하나 이상의 데이터를 보관할 수 있는 특수한 자료구조. Swift의 컬렉션 타입 종류 Array 소속된 멤버가 순서를 가진 리스트 형태 Dictionary '키'와 '값'으로 이루어진 타입 map과 비슷함 Set 중복되지 않은 멤버가 순서 없이 존재하는 컬렉션 Array 배열이며 다른 언어와 개념의 차이는 크게 없다. var integers : Array = Array(); integers.append(1); // 1값을 가진 멤버 추가. integers.append(100); integers.contains(100); // 100이라는 값이 있는지에 대한 여부 확인. intege..

Develop/Swift 2019.05.07

Swift Any, AnyObject, nil

Swift에는 모든 자료형을 받을 수 있는 데이터 형태가 있다. 약간 java의 Object나 javascript의 var 같은 느낌인줄 알았는데 살짝 다르다. Any Any는 Double, Float, Int, UInt, Chracter, String 등 다양한 자료형의 값을 받을 수 있다. 클래스와 같은 Object형태는 받을 수 없다. var anyV : Any; var test1 : Int = 10; var test2 : String = "test"; anyV = test1; // Any = Int ( 가능 ) anyV = test2; // Any = String ( 가능 ) test2 = anyV // String = Any ( 불가능 ) 다만 Any형을 가진 변수가 String형을 가진 변수를..

Develop/Swift 2019.05.07

Swift 상수와 변수의 선언, 데이터 타입

상수와 변수의 선언 상수 : 한번 정하면 변하지 않는 수 혹은 값 변수 : 언제든지 변경될 수 있는 수 혹은 값 Swift에서는 상수와 변수의 선언하는 방법이 다르다. 상수는 let으로, 변수는 var로 선언한다. let Test : String = "상수"; // let var Test2 : String = "변수"; // var 변수와 상수를 선언하고 바로 초기값을 입력하지 않아도 된다. let sum : Int; // 초기값 입력 X let num1 : Int = 1; let num2 : Int = 2; sum = num1 + num2; //num1, num2 상수값을 더한 값으로 초기값 설정 이후 sum에 다른 값을 넣으면 오류 발생 sum = 10; // !!!!오류 발생 !!!! 상수, 변수를..

Develop/Swift 2019.05.07

Swift 콘솔로그, 문자열 보간법

가장 처음 배우는 것은 역시 print인가.. 배우다 보니 Switf에는 dump라는 것이 있는데, 이게 약간 java에서 toString으로 클래스 내의 선언된 변수들을 console로 찍어보는 느낌이다. java의 경우는 toString을 재정의 하여 사용하는 경우가 많은데 dump는 애초에 지원해주는 것이니 더 좋은건가... ?; 콘솔로그 남기는 법 print : 단순 문자열 출력 dump : 인스턴스의 자세한 설명까지 출력 import Foundation let test : Int = 10; class Person{ var name : String = "뚠님"; var age : Int = 10; } let person : Person = Person(); // 클래스 생성. print("테스트입..

Develop/Swift 2019.05.07

SandBox 제약으로 보안을 강화한다.

강의를 들으면 공부하는 시스템의 유래(?)를 설명해 주는것이 너무 좋다. 이런 기능이 있는데 이게 왜 나왔냐면 블라블라~ 사실 이것은 실무를 하는데 굉장히 중요한 내용이다. 고객에게 왜 안되는지, 내가 실력이 없어서가 아니라 루트(Root)단에서 막아버린거라 어쩔 수 없다는 이야기는 결과적으로 정확한 지식과 증거가 있어야 한다. 참고로 얼마전 안드로이드 앱을 개발하는데 동영상 녹화 파일이 4GB를 넘어버리면 녹화가 중지되는 이슈가 있었다. 고객사에서는 1차적으로 해당 이슈를 해결하길 바랬고, 해결할 수 없는 문제라면 해결 할 수 없는 이유를 알려달라고 했다. 원인은 안드로이드는 Local Memory가 FAT32 파일시스템이며, FAT32는 4GB 이상의 파일을 저장 할 수 없는 파일 시스템이다. 따라서..

Develop/iOS 2019.05.04
반응형