✅ 디바이스 버전 확인 


print(UIDevice.current.systemVersion)

결과값

11.3







1️⃣ Bool 값 으로 체크


        print(UIDevice.current.systemVersion.hasPrefix("11"))

        print(UIDevice.current.systemVersion.hasPrefix("10"))

        print(UIDevice.current.systemVersion.hasPrefix("9"))


위와 같이 프린트를 찍어 보면 아래와 같이 결과 값이 찍힌다.


true

false

false


사용 예)


        if UIDevice.current.systemVersion.hasPrefix("11") == true {

            print("ios 11 버전")

        } else {

            print("ios 11 외 버전")

        }






2️⃣ 특정 버전 이상 체크


        if #available(iOS 10, *) {

            print("ios 10 버전 이상")

        } else {

            print("ios 10 버전 미만")

        }






3️⃣ 버전 체크 세분화


        let os = ProcessInfo().operatingSystemVersion


        switch (os.majorVersion, os.minorVersion, os.patchVersion) {


        case (11, 3, 0):

            print("iOS = 11.3.0 메이저,마이너,패치 버전 까지 체크")


        case (11, 3, _):

            print("iOS = 11.3.? 마지막 패치 버전 상관 없음")


        case (11, _, _):

            print("iOS = 11.?.? 마이너 & 패치 버전 상관 없음")


        default:

            print("iOS = 11 버전 아님")


        }



설정

트랙백

댓글

14. 딕셔너리 (Dictionary)

  • 고유 키 (Key) 와 귿에 대응하는 값(Value) 을 연결 하여 데이터를 저장하는 자료형이다. 인덱스 정수 대신 문자열 등의 고유 키를 사용한다는 차이를 제외 하면 배열과 아주 흡사하다.
            [ 키 : 데이터 , 키 : 데이터 , …..]
  • 하나의 키는 하나의 데이터에만 연결되어야 한다.
  • 하나의 딕셔너리에서 키는 중복될 수 없다. 중복해서 선언하면 아이템 추가가 아니라 수정이 이루어져 기존 키에 연결된 데이터가 제거 된다.
  • 저장할 수 있는 데이터 타입에는 제한이 없지만, 하나의 딕셔너리에 저장하는 데이터 타입은 모두 일치 해야 한다.
  • 딕셔너리의 아이템에는 순서가 없지만 키에는 내부적으로 순서가 있으므로 for~in 구문을 이용한 순회 탐색을 할 수 있다.
  • 딕셔너리에서 사용할 수 있는 키의 타입은 거의 제한이 없으나 해시 연산이 가능한 타입이어야 한다.
var capital = [“KR” : “Seoul” , “EN” : “London” , “FR” : “Paris”]


저장된 값
KR
Seoul
EN
London
FR
paris

capital[“KR”] // “Seoul”
capital[“EN”] // “London”
capital[“FR”] // “Paris”

  • 딕셔너리의 초기화
Dictionary<String, Int>() //문자열 키와 정수 값 딕셔너리

Dictionary<String, String>() //문자열 키와 문자열 값 딕셔너리

Dictionary<String, AnyObject>() //문자열 키와 범용 클래스 값으로 이루어진 딕셔너리

Dictionary<Character, String>() //문자 키와 문자열 값으로 이루어진 딕셔너리

  • 딕셔너리의 선언과 초기화
var capital = Dictionary<String, String>( ) //방법 1

var capital = [String : String]( ) //방법 2

###################

var capital : Dictionary<String, String> //타입 이노베이션을 이용한 딕셔너리 선언

capital = Dictionary( ) //딕셔너리 초기화

###################

var capital : [string:String] //타입이노테이션을 이용한 딕셔너리 선언

capital = [String:String]( ) //딕셔너리 초기화

################### 

//딕셔너리의 초기화
capital = Dictionary<String, String>( ) 
capital = Dictionary( )
capital = [String:String]( )
capital = [:]

  • 딕셔너리에 동적 아이템 추가 하기
var newCapital = [String:String]( )
newCapital[“JP”] = "Tokyo"
print(newCapitall[“JP"])
// Tokyo 

  • 데이터 수정 하기
newCapital.updateValue(“okinawa”, forked:”JP”)
print(newCapitall[“JP”])
//출력 값 : okinawa

  • 데이터 삭제 하기
newCapital[“JP”] = nil
print(newCapitall[“JP”])
//출력 값 : error

################### 

newCapital.removeAll( ) // 딕셔너리의 모든 값 삭제

################### 

newCapital.removeValue(forKey:”JP”) // JP 키 의 값 삭제



  • 딕셔너리 순회탐색 
for row in newCapital {
    let (key , value) = row
    print(“현재 데이터는 \(key) : \(value) 입니다.”)
}

// 출력
현재 데이터는 CA : Value = beijing 입니
현재 데이터는 KR : Value = seoul 입니
현재 데이터는 JP : Value = okinawa 입니

################### 
간결한 버전
for (key, value) in newCapital {
    print(“현재 데이터는 \(key) : \(value) 입니다.”)
}
// 출력
현재 데이터는 CA : Value = beijing 입니
현재 데이터는 KR : Value = seoul 입니
현재 데이터는 JP : Value = okinawa 입니



'Swfit' 카테고리의 다른 글

13. Swift 구조체와 클래스  (0) 2017.08.04
12. Swift 클로저(Closure)  (0) 2017.08.04
11. Swift 함수의 중첩  (0) 2017.08.04
10. Swift 일급 객체로서의 함수  (0) 2017.08.04
9. Swift 매개변수  (1) 2017.08.04

설정

트랙백

댓글

13. Swift 구조체와 클래스


* 기본개념 *
값을 저장할 수는 없지만 특정 기능을 실행할 수 있는 함수와, 값을 저장할 수 있지만 혼자서 특정 기능을 실행할 수는 없는 변수 상수의 특성을 모두모아놓았다고 이해하면 편하다.


  1. 구조체와 클래스의 공통점
  • 프로퍼티
    • 변수나 상수으를 사용하여 값을 저장하는 프로퍼티를 정의할 수 있다.
  • 메소드
    • 함수를 사용하여 기능을 제공하는 메소드를 정의할 수 있다.
  • 서브스크립트
    • 속성값에 접근할 수 있는 방법을 제공하는 서브스크립트를 정의할 수 있다.
  • 초기화 블록
    • 객체를 원하는 초기 상태로 설정해주는 초기화 블록을 정의할 수 있다.
  • 확장
    • 객체에 함수적 기능을 추가하는 확장(extends)구문을 사용할 수 있다.
  • 프로토콜
    • 특정 형식의 함수적 표준을 제공하기 위한 프로토콜을 구현할 수 있다.

  1. 구조체와 클래스의 차이점
  • 상속
    • 클래스의 특성을 다른 클래스에게 물려줄 수 있다.
  • 타입 캐스팅
    • 실행 시 컴파일러가 클래스 인스턴스의 타입을 미리 파악하고 검사할 수 있다.
  • 소멸화 구문
    • 인스턴스가 소별되기 직전에 처리해야 할 구문을 미리 등록해 놓을 수 있다.
  • 참조에 의한 전달
    • 클래스 인스턴스가 전달될 때에는 참조 형식으로 제공되며, 이때 참조가 가능한 개수는 제약이 없다.

//구조체의 정의 형식
struct 구조체_이름 {
    // 구조체 정의 내용이 들어갈 구문
}

//클래스의 정의 형식
class 클래스_이름 {
    // 클래스 정의 내용이 들어갈 구문
}

//카멜 표기법
  1. 구조체와 클래스 이름의 첫 글자는 대문자로, 나머지 글자는 소문자로 작성한다.
  2. 2개 이상의 복합 단어는 단어별로 끊어 첫 글자는 대문자로, 나머지는 소문자로 작성한다.
  3. 이미 축약된 약어는 모두 대문자로 작성 가능하다(ex: JSON, NS , HTTP 등)
  4. 프로퍼티나 메소드를 선언할 때는 소문자로 시작한다.
  5. 언더바로 단어를 연결하는 방식은 지양한다.



'Swfit' 카테고리의 다른 글

14. 딕셔너리 (Dictionary)  (0) 2017.08.04
12. Swift 클로저(Closure)  (0) 2017.08.04
11. Swift 함수의 중첩  (0) 2017.08.04
10. Swift 일급 객체로서의 함수  (0) 2017.08.04
9. Swift 매개변수  (1) 2017.08.04

설정

트랙백

댓글