반응형

 

Any

Any는 Swift의 모든 데이터 타입을 사용할 수 있다.

 

변수 또는 상수의 데이터 타입이 Any로 지정되어 있다면 그 변수 또는 상수에는 어떤 종류의 데이터 타입이든지 상관없이 할당할 수 있다!

일반적으로 정수형으로 선언한 변수나 상수는 정수형 데이터를 저장 후에 정수형 이외의 데이터 타입을 저장하려고 하면 오류가 발생한다.

아래 코드는 정수형 변수 something에 100을 할당 후 문자열 "Glasses"를 저장한 것이다. 당연히 오류 발생.

 

var something: Int = 100
something = "Glasses" // 오류 발생
print(something)

 

하지만 Any타입에서는 뭐든지 가능하다. 아래 코드는 Any타입인 something 변수에 정수형, 문자열, 소수형 값을 할당했다.

var something: Any = 100
print(something) // 100 출력
 
something = "IPhone"
print(something) // IPhone 출력
 
something = 1.123
print(something) // 1.123

 

NOTE

Any는 될 수 있으면 사용하지 않는 것을 추천한다. 타입에 상당히 엄격한 Swift의 특성 상 Any 또는 AnyObject로 선언된 변수의 값을 가져가 쓰려면 매번 타입 확인 및 변환을 해줘야 하는 불편함이 있을뿐더러 예기치 못한 오류의 위험을 증가시키기 때문이다.

앞서 타입 추론 때도 설명했지만 타입은 될 수 있는 한 명시하는 것이 좋다.


nil

nil은 Any처럼 특정 타입이 아니라 '없음'을 나타내는 키워드이다.

 

var nilTest: Int= 100
// nillTest 변수는 졍수형 타입 100을 저장하고 있다.
nilTest = nil
// nilTest 변수는 아무런 값도 저장하지 않고 있다.

 

nil은 non-optional 변수나 상수에서는 사용할 수 없다. 만약 상수나 변수가 특정 조건에서 값이 없는 상태에서 작동해야 하는 경우가 있다면 항상 optional 변수로 선언하자.

만약 값을 할당하지 않고 optional 변수로 선언하면 변수는 자동적으로 nil로 세팅된다.

 

var nilTest: Int// 아무 것도 저장이 되지 않은 nil 상태

 

다른 프로그래밍 언어를 해 본 사람은 null값이라고 생각하면 편할 것 같다. 변수나 상수에 값이 없는 경우, 즉 nil이면 해당 변수나 상수에 접근했을 때 잘못된 메모리 접근으로 런타임 오류가 발생한다.

잘못된 메모리에 접근하여 발생하는 런타임 오류는 Null Pointer Exception 이라고 불린다.

 

반응형
반응형

Swift 5

Simulator로 테스트할 때 TextField를 클릭하여 현재 키보드 모양을 보고싶은데 보이지 않을 때 보이게 하는 방법이다.

 

1. iOS Simulator -> Hardware -> Keyboard

2. "Connect Hardware Keyboard" 체크 해제

 

 

반응형
반응형

 

Swift 5

 

앱을 개발하다보니 위 사진처럼 주민등록번호나 휴대폰 번호와 같이 사용자가 숫자만 입력하도록 제한하고 싶을 때가 있다.

나는 임의의 숫자를 맞추는 [UP & Down] 게임을 개발하다가 숫자 이외의 단어를 입력하면 오류가 나는 것을 방지하기 위해 다음과 같은 방법을 사용했다.

상당히 간단하다.

Storyboard에서 TextField의 타입을 변경한다.

1. 숫자 입력으로 제한할 TextField를 선택한다.

2. Attribute Inspector로 이동하여 Keyboard Type을 확인한다.

3. Keyboard Type을 Number Pad로 변경한다.

반응형

+ Recent posts