본문 바로가기
휴지통/휴지통1

Swift 1 일차

by Shuming 2016. 5. 3.
반응형

상수와 변수


let 상수 - 변하지 않는다


var 변수 - 변할 수 있다.



* 변수 혹은 상수의 타입을 별도로 지정하지않는 암시적 타입선언을 할 수 있다.


let intValue = 1  암시적 타입선언 이다. Int값으로 판단.

let intValue: Int = 1 명시적으로 선언을 했다. (이거 쓰면댐)





* import Foundation -> 문자, 스트링, 숫자와 같은 기본 객체, 컬렉션인 배열,딕셔너리,세트,날짜,시간,메모리관리 등 프로그래밍 전반적인 기능을 제공해주는 Class






Swift 기본 데이터형


Int, String, Float, Double, Bool(=boolean), Character . . . .


UInt, Int 타입은 사용중인 OS에 따라 그 크기가 달리질 수 잇다. ( Int8, Int16, Int32, Int64 )







while, do~ while 문




* Swift 2.2 버전으로 업데이트 되면서 do ~ while 은 repeat ~ while 로 대체 되었다.

* do 는 예외처리로 가버렸 빠이빠이!


초깃값

while 조건 {

증가값

}


---


초깃값

repeat {

증가 값

} while 조건



repeat while 문은 최소한 1번은 반복된다. 






for 문 과 for in  반복문.



for var i = 0; i<10; i++ {

일반적인 for 문의 형태도 사용 가능

}



for num in 1...10 {

num 이렇듯 1~10까지 반복을 쉽게 할 수 있다. 

}






if 문 switch 문 


if 문은 다른언어와 그닥 다를게없다.


if  조건 {

실행문장

}



a && b

- a 이거나 b 

a || b 

- a 와 b 


조건문이 많아지면 - > switch case 문으로 대체하도록 하자. 


swift 의 switch csse 문은 다른 언어보다 지원해주느게 쵸큼 더 많다.


* break 문을 명시적으로 적지 않아도 된다.

- 기본적으로 다음 case로 넘어가지 않는다 . 넘어가려면 fallthrought 와 같은 명령어가 필요함.


* 각 case는 비어있을 수 없다. 즉 실행가능한 statement가 꼭 필요하다.


* case에는 값의 포함 여부도 알 수 있다. 

- case 1...3 이런식 1~3까지의 case를 나타낸다.


* case에는 Tuple도 담을 수 있다.

- case(x, y) : ~~~

- csse(1...3, 4...40) : ~~~ 이런것도 가능하단겨! 


* 값이 일치하는 경우 어떤 값을 변수, 상수로 묶을 수 있다. ?

- let something = (2, 0)

   switch something 

case (let x , 0) 

- x 의 값은 2 


* 부가적인 조건을 더 줄 수 있다.

- switch something

  case let(x, y) where x >= y 

          ( something 은 (2,0) 이었 으므로 이 case는 true )







Array 배열 과 Dictionary 




let someValue = [String]() - someValue 라는 아무런 값이 없는 배열.


let someValue: [String] = [] - 마찬가지임.


var someValue = ["a","b","c"] - a,b,c 라는 값을 갖고잇는 string 배열


someValue = [String]() - a,b,c 값을 가진 someValue를 초기화.



someValue += ["d"] - d값 추가


someValue.append("d") - d값 추가.

= 배열의 마지막에 항목들을 추가함



someValue.insert("e", atIndex: 3)

= 배열의 3번 째에 e 추가.


someValue.removeLast()

= 마지막값 제거 (removeAtIndex 가능)






숫자 배열도 같은 형식


var dataFloat = [Float] (count : 10, repeatValue: 0.1)

- Float Type Array, 갯수는 10개 초기값은 0.1 







Dictionary 


key, value로 구분하는 순서가없는 배열.


형태 ==== var dicValue : [String: String] = ["strKey" : "strValue", "valKey": "valValue"]

 


사용


for ( first, end ) in dicValue {

first - 키값의 alias

end - value 값의 alias 

}


처럼도 사용 할 수 있다.



값 추가 


dicValue["someKey"] = "someValue"


dicValue 딕셔너리에 someKey 라는 이름으로 someValue 추가했다.



값 삭제


dicValue["delKey"] = nil








Fucntion 함수.


함수는 반복해서 사용할 수 있는 (재사용 할 수있는) 코드를 모아놓은 블럭 ( '{}' ) 이다.


func someFunctionName {

statement

}




매개 변수 (Parameter)  를 사용 할 수 있다


func someFunctionName( someVariable: String ) {

someVariable

}




retrun 값의 Type을 정의 할 수 있다.


func someFunctionName( a: Int, b: Int) -> Int {

retrun a+b 

}


someFunctionName(3, b: 4)




parameter 에 alias를 줄 수 있다


func some( sumin a:Int, suming b:Int) {

 a+b

}


some(sumin: 3, suming: 4)









Optionals 


swift 의 변수는 nil 값을 받지 못한다.  


var sVal: String = nil ---> 떄문에 이 구문은 오류다.


때문에 


var sVal: String? = nil 으로 Optionals로 wrapping 하면 (표현이 이렇ㄷㅏ)


sVal 은 스트링값이 들어갈 수 도 없을(nil값) 일 수도 있다.



이렇듯 ? 표시로 변수에 nil 값이 들어갈 수 있다는 것을 강조한다.




이번에는 unwrapping optionals 옵셔널을 벗겨보자 하앜



var sVal: String? = nil


if let some = sVal {

    print("\(some)")

}


some 에는 값은 없지만 에러는 아니다 ( 값을 담으면 나오겟찌 )




let value : String? = "An Optional String"

let strVal : String = value!


처럼


value!를 사용해서 value에 값이 있다 라고 확신할때 아 이건 있어! 느낌표 뙇 ㅇㅋ?



또!!  절대적인 옵셔널이라고 해써


let value2: String! = "implicitly optionals"

let strVal2: String = value2



value2: String! 처럼 이미 값이 있ㄷㅏ! 있으니까 !!! 느낌표를 붙여줘서 선언한다.


하지만 이때 value2의 값이 없으면 에러가 되니 주의. 



= 정리하면 옵셔널?은 nil값이 들어갈 수 있게끔 해주는 거고 ! 느낌표는 많이 쓰면 안된다. 자제 하자.














반응형

'휴지통 > 휴지통1' 카테고리의 다른 글

Swift Class and Structure  (0) 2016.05.09
Swift Function  (0) 2016.05.09
android jar파일의 resource에 접근하는 법.  (0) 2016.04.27
Excel to SQL 엑셀에서 SQL 쿼리 만들기.  (0) 2016.04.06
Spring Scheduling 참조.  (0) 2016.04.01

댓글