Latest web development tutorials

스위프트 옵션 (선택적 개체)를 입력

누락 된 값을 처리 할 때 사용 스위프트 옵션 (선택 사항) 유형입니다. 선택 수단 "이 값이며, X와 동일이다"또는 "값이 존재하지 않는다."

Swfit 언어 정의 접미사? 속기의 명명 된 유형으로 선택, 즉, 다음 두 명령문은 동일합니다 :

var optionalInteger: Int?
var optionalInteger: Optional<Int>

두 경우 모두, 가변 optionalInteger 선택적 정수형이다. 종류와에 그주의? 사이에 공백이 없습니다.

선택 사항의 경우, 없음 및 일부 (T)를 모두 포함하지 열거, 그것은 수도 나타내는 데 사용됩니다 또는 값이 없을 수 있습니다. 모든 유형이 명시 적으로 (또는 암시 적 변환) 옵션 형식으로 선언 할 수 있습니다. 당신은 시간의 선택 유형을 선언 할 때, 괄호를 사용하십시오? 운영자 적절한 범위. 예를 들어, 임의의 정수 배열 선언이 작성되어야한다 (INT [])? 지능 [] 에러로 기록.

당신이 사용할 수있는 변수 또는 옵션 선택 속성을하지 선언 할 때 때 초기 값, 전무로 그 값을 기본값으로합니다.

옵션 추적의 LogicValue 계약, 그것은 부울 상황에 나타날 수 있습니다. 옵션 형 T는? 값 T의 모든 유형을 포함하는 경우이 경우, (즉, 그 값이 Optional.Some (T)라고한다),이 옵션 유형은, 그렇지 않으면 거짓, 사실 같습니다.

유형이의 선택 인스턴스가 값이 포함 된 경우 후위 연산자를 사용할 수 있습니다! 다음과 같이 값에 액세스하려면 :

optionalInteger = 42
optionalInteger! // 42

연산자를 사용합니다! 옵션 변수를 취득하려면 오류가 타임 실행됩니다 전무하다.

당신은 선택 식에 대한 작업을 수행하기 위해 선택적 옵션 링크 옵션 바인드를 사용할 수 있습니다. 값이 전무의 경우, 작업은 구현되지 않는 오류가 실행되지 않습니다.

의 응용 프로그램의 신속한 선택 유형을 알아 보려면 다음 예제를 살펴 보자 :

import Cocoa

var myString:String? = nil

if myString != nil {
    print(myString)
}else{
    print("字符串为 nil")
}

위의 프로그램 실행 결과 :

字符串为 nil

옵션 유형은 목표 - C에서 전무 포인터의 값과 유사하지만 전무 클래스 (클래스)에 유용하지만 유형의 모든 유형을 사용할 수 있습니다 (선택 사양), 더 안전합니다.


해결하기 위해 강제

이 옵션 값을 포함 않는 유형을 결정하면, 당신은 느낌표 뒤에 옵션 이름을 추가 할 수 있습니다 (!) 값을 얻을 수 있습니다. 느낌표는 "나는 그것을 사용, 옵션 값이있는 것을 알고있다"고 말했다. 이것은 (언 래핑 강제) 필수 선택 파싱 된 값이라고합니다.

다음 예는 다음과 같다 :

import Cocoa

var myString:String?

myString = "Hello, Swift!"

if myString != nil {
   print(myString)
}else{
   print("myString 值为 nil")
}

위의 프로그램 실행 결과 :

Optional("Hello, Swift!")

외부 힘에 의한 분석 옵션 값은 느낌표 (!)를 사용 :

import Cocoa

var myString:String?

myString = "Hello, Swift!"

if myString != nil {
   // 强制解析
   print( myString! )
}else{
   print("myString 值为 nil")
}

위의 프로그램 실행 결과 :

Hello, Swift!

참고 :
사용 ! 존재하지 않는 옵션 값이 런타임 오류가 발생합니다 얻으려면. 사용 ! 분석 값을 강제하기 전에 선택적으로 결정 비 포함해야 nil 값입니다.


자동 분석

당신이 변수 선택 느낌표를 선언 할 때 물음표를 대체 할 수있다 (!) (?). 필요하지 않은이 선택적 변수 플러스 느낌표를 사용하는 경우 (!) 값을 얻기 위해 자동으로 분석됩니다.

다음 예는 다음과 같다 :

import Cocoa

var myString:String!

myString = "Hello, Swift!"

if myString != nil {
   print(myString)
}else{
   print("myString 值为 nil")
}

위의 프로그램 실행 결과 :

Hello, Swift!

선택시 귀속

옵션 바인딩을 사용하여 임시 변수 나 상수를 넣어 할당 된 값이 포함 된 경우, 옵션 유형은 값이 포함되어 있는지 여부를 확인하기 위해 (옵션 바인딩). 문 임의 유형의 값을 판단하고, 상수 또는 변수에 값을 할당하는 동안 선택적 경우에서 사용될 수 바인딩.

바인딩 (선택 사양)에 기록이 if 문처럼 :

if let constantName = someOptional {
    statements
}

의 간단한 대안 바인딩 예를 살펴 보자 :

import Cocoa

var myString:String?

myString = "Hello, Swift!"

if let yourString = myString {
   print("你的字符串值为 - \(yourString)")
}else{
   print("你的字符串没有值")
}

위의 프로그램 실행 결과 :

你的字符串值为 - Hello, Swift!