티스토리 뷰
iOS 스위프트 문법
assert(_:_:file:line:)
swift의 문법 중 하나인 assert입니다. assert는 전통적으로 C 스타일의 assert문을 메세지와 함께 넣어서 사용할 수 있게 해줍니다.
assert문은 특정 조건을 체크하고, 조건이 성립되지 않으면 메세지를 출력하게 할 수 있는데, 실제 배포된 앱 성능에는 영향을 끼치지 않는다는 특징이 있습니다.
이러한 특성을 갖기 때문에 assert문은 API 테스트 등, 조건 체크 및 테스트를 해야할 때 유용하게 사용될 수 있습니다.
iOS 개발 간 테스트코드 작성 시에 특정 조건 체크를 위해 사용되는 문법 중 assert와 유사한 메서드, XCTAssert 라는 기능도 존재합니다. 관심있으시다면 XCTAssert와 관련 된 내용도 찾아보시기 바랍니다.
assert 메서드 선언형태
assert의 선언형태입니다. assert 메서드는 총 4개의 인자를 받을 수 있습니다.
체크할 조건 문 / 조건 미충족 시 메세지 / 메세지 출력할 파일 / 출력할 메세지 라인 수 의 총 4개의 메서드가 존재합니다.
첫번째 인자인 조건문만 넣어서 체크할 수도 있습니다. 나머지 인자값은 디폴트 설정이 되어있기 때문입니다.
1) 첫번째 인자인 condition입니다. 첫번째 인자로 assert 메서드는 해당 인자에 대한 조건을 체크하게 됩니다. 플레이 그라운드, -Onone 빌드 상에서만 평가되며, 실제 배포된 앱 성능에는 영향을 미치지 않습니다.
2) message는 첫번째 인자인 condition이 false일 경우 출력되는 메세지를 설정합니다.
3) 세번째 인자인 file은 assertion fails 이 일어날 경우 출력할 파일의 이름을 설정할 수 있습니다. 디폴트로는 assert() 메서드가 호출된 곳의 파일이 됩니다.
4) 마지막 인자인 line입니다. assertion fails가 발생했을 때 출력할 메세지의 line 수를 설정합니다.
assert, precondition 스위프트 문법 특징
앞서 살펴보았듯이, assert 메서드 스위프트 문법은 실제 앱 성능에는 영향을 끼치지 않으면서 내부 테스팅 과정에서 특정 조건이 성립되는지를 체크하고자 할 때 유용하게 사용할 수 있습니다.
하지만 조건이 성립하는지 체크하고, 만약 조건이 성립하지 않으면, 실제 앱에도 영향을 미치고 싶을때가 있을 수 있겠죠? 이럴때 사용할 수 있는 문법으로는 assert 메서드대신 precondition(_:_:file:line:) 메서드가 있습니다.
앱 실행 간 조건절 테스트가 적용되어야 할 범위에 따라, assert, precondition 등을 선택해서 테스팅과정에 활용할 수 있겠습니다.
스위프트 문법, assert 메서드 사용하기
위의 코드는 실제 assert문을 사용하는 예시입니다. 위의 someMethod 메서드는 특정 Int 타입 값을 받아서 해당 값이 0인지를 체크하는 assert문을 실행합니다.
- 만약 해당 값, number가 0이 아니라면 "this is not a zero"를 출력하게 됩니다.
- 만약 number가 0이라면 해당 행을 무사히 넘어가고 정상적으로 이후의 코드를 실행하게 됩니다.
10행에서는 해당 메서드에 인자값 10을 넣어서 출력을 실행하고 있죠?
10은 0이 아니므로 assert 메서드의 assertion failed 메세지로 "this is not a zero" 가 출력이 될 것입니다. 그 결과는 아래와 같습니다.
'iOS 개발 > 개발자문서 정보' 카테고리의 다른 글
iOS 자연어처리 MLModel, MLTextClassifier 문서개요 (0) | 2020.10.09 |
---|---|
swift enum, CaseIterable로 열거형타입 배열처럼 다루기 (0) | 2020.09.27 |
iOS swift 문법 팁, defer문 특징 및 사용방법 (0) | 2020.09.24 |
iOS swift UIViewController, didMove 메서드 개요 (0) | 2020.09.22 |
Swift FileManager 파일삭제, removeItem 메서드 개요 (0) | 2020.09.19 |
- Total
- Today
- Yesterday
- 컬렉션
- 스위프트
- 프로그래머스swift
- 알고리즘문제
- 알고리즘
- swift문제
- 백준swift
- createML
- ios
- swift 문자열
- 개발자문서
- Swift 알고리즘
- 김프매매
- swift reduce
- CoreML
- swift
- 백준알고리즘
- publisher
- swift string
- SwiftUI
- 부스트코스
- swift언어
- Protocol
- swift알고리즘
- Collection
- 프로토콜
- swift 기초
- uikit
- 프로그래머스
- 자연어처리
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |