전체 글 19

[Swift]옵셔널(Optional) - 3

전편과 이어집니다 옵셔널 바인딩 1)if 구문 내에서 조건식 대신 옵셔널 값을 일반 변수나 상수에 할당하는 구문을 사용하는 방식 2)조건문 내에서 일반 상수에 옵셔널 값을 대입하는 방식 3)반드시 조건문에서 사용해야만 한다 4)옵셔널 값을 대입한 결과는 true/false로 리턴 예제를 확인해봅시다 var str = "swift" //if문 if let STR = Int(str) { print("Int형으로 변환됩니다") } else { print("실패!") } //guard문 guard let STR = Int(str) else { print("실패!") return } 전편과 비슷해보이지만, STR가 상수도 선언되었으며 옵셔널이 아닌 일반 타입 강제 해제 연산자(!)를 사용하지 않아도 옵셔널 값이 ..

Swift 2022.01.06

[Swift]옵셔널(Optional) - 2

전편과 이어집니다 옵셔널 처리 let num: Int? = Int("123") print(num) //결과: Optional(123)위와 같이 옵셔널 타입으로 정의한 것에 결과는 Optional이 앞에 붙은 결과가 나옵니다 이 Optional이라는 객체를 해제해야 실제로 쓸 수 있는 결과가 나옵니다 이때 옵셔널 객체를 해제하고 내부의 값을 가져오는 것을 옵셔널 해제라고 합니다 다른 말로는 옵셔널 언래핑(Optional Unwrapping)이라고 합니다 옵셔널 해제 방법 1)명시적 해제 1)강제 해제 2)비강제 해제 2)묵시적 해제 1)컴파일러에 의한 자동 해제 2)! 연산자를 이용한 자동 해제 옵셔널 강제 해제 강제 해제 방법은 !를 붙이면 끝! ! 기호는 강제 해제 연산자(Forced Unwrappin..

Swift 2021.12.29

[Swift]옵셔널(Optional) - 1

옵셔널(Optional) 스위프트에서 도입된 새로운 개념으로 언어 차원에서 프로그램의 안전성을 높이기 위해 사용하는 개념입니다 한 문장으로 정의하자면 nil을 사용할 수 있는 타입과 사용할 수 없는 타입을 구분, 사용할 수 있는 타입을 가리켜 옵셔널 타입이라고 부른다 여기서 nil이란 값이 없음을 의미하는 특수한 값입니다 let capital = ["KR": "Seoul", "CN": "Beijing", "JP": "Tokyo"] capital["KK"] // nil위와 같이 capital에 KK라는 키와 값은 없습니다 이러한 경우 스위프트는 nil이라는 값을 반환합니다 하지만 모든 타입에서 nil을 반환할 수 있는 것은 아니며, 오직 옵셔널 타입만 nil을 반환할 수 있습니다 옵셔널은 오류가 발생할 수..

Swift 2021.12.28

[Swift] Dictionary(딕셔너리)

Dictionary 고유 키(Key)와 키에 대응 하는 값(Value)을 연결하는 데이터를 저장하는 자료형 [ key: value, ...] 배열과 마찬가지로 대괄호를 사용하며 키와 값 사이는 콜론으로 구분 특징 1.하나의 키는 하나의 데이터만 연결 2.하나의 딕셔너리에서 키는 중복될 수 없습니다 3.저장할 수 있는 데이터의 타입에는 제한이 없지만, 하나의 딕셔너리에 저장하는 타입은 모두 일치해야됩니다 //선언과 동시에 값 정의 var captical = ["KR": "Seoul", "EN": "London", "FR", "Paris"] //딕셔너리 참조 방법 captical["KR"] /결과: Seoul ... //선언만(빈 딕셔너리) Dictionary() Ex) Dictionary() //간결하게 ..

Swift 2021.12.25

[Swift] Tuple(튜플)

튜플 1.스위프트에서 제공하는 특별한 성격의 집단 자료형 2.(배열과 딕셔너리와 달리)여러 가지 타입의 아이템을 저장할 수 있다 3.선언되면 상수 성격임으로 값 추가 및 수정 불가 --> 타입은 여러 가지가 저장되지만, 한번 만들면 수정이 불가하다 let tupleValue = ("a", "bcd", 1, 2.5, true) //타입어노테이션을 쓰면 좋다 "a", 2.5같은 추론하기 애매한 타입때문이다 let tupleValue: (character, String, Int, Double, Bool) = ("a", "bcd", 1, 2.5, true)위와 같이 여러 가지 타입 저장할 수 있으며, tupleValue.0 //결과: a ...위와 같이 인덱스를 참조하여 해당 값을 불러올 수 있다 튜플은 특히하..

Swift 2021.12.25

1)UITableView - cell 구성

이번에는 UITableView에 관련하여 공부를 해봅시다(Apple Document) 기본적으로 UITableView에 관한 공식문서에서 보면 확인할 수 있는 화면입니다. 세로로 스크롤되는 컨텐츠 행을 표시 TableView는 표라는 틀을 제공한다면, 실질적인 컨텐츠를 보여주는 것은 UITableViewCell안에서 텍스트와 이미지를 원하는 내용으로 표시하여 우리에게 보여줄 수 있다 Main에서 UIViewContoller에 UITableView를 올리는 것이 가장 기본적인 시작입니다 TableView를 올렸으면 이제 데이터를 채워보도록 하죠 데이터로 테이블 채우기 tableview는 데이터 기반요소로 데이터 소스 개체는 DataSoure프로토콜을 채택하여 사용한다 UITableViewDataSource..

iOS 2021.12.25

3)UIBezierPath - 속성

UIBezierPath 그리기 1편 이번에는 속성을 볼까요? 위 사진과 같이 여러 개 존재합니다 한 개씩 확인해봅시다 var lineWidth: CGFloat 가장 기본적인 속성으로 선의 굵기(너비)라고 생각하면 될거같습니다 그럼 default와 임의로 늘린 값을 확인해보죠! default lineWidth = 100 어휴.. 값이 너무 컷네요... 이처럼 lineWidth 값이 클수록 선이 굵어집니다 var lineCapStyle: CGLineCap 다음! lineCapStyle 이건 선을 모자라고 칭하고 그 모자의 모양을 나타냅니다. 여러 개의 스타일을 확인해봅시다 1).butt 2).round 3).square 음...round는 확실하고...2개는 보기엔 똑같아 보이네요.... cap은 총 3개가..

iOS 2021.12.23

2)UIBezierPath - 직선 연결(그리기)

전편 직선 연결(그리기 전) 참고해주세요!! 전편에 이어서 이번엔 직접 그리는 것을 해보겠습니다. 커스텀 뷰에 그릴 수 있는 것 이라고 합니다 라는 의미는 View에 draw()를 써서 하라는 뜻이라고 생각 하시면 될거 같습니다(틀렸다면 말해주세요~) let path = UIBezierPath() path.move(to: CGPoint(x: 0, y:0)) path.addLine(to: CGPoint(x: 100, y: 100) path.close() path.stroke()우리가 그려봤던 (0,0)에서 (100,100)까지 직선 하나를 보여주도록 하겠습니다. class pathLine: UIView { override func draw(_ rect: CGRect) { let path = UIBezier..

iOS 2021.12.22

1)UIBezierPath - 직선 연결(그리기 전)

UIBezierPath란? 배지어 곡선 설명 직선 및 곡선 선분으로 구성된 경로 그리고 커스텀 뷰에 그릴 수 있는 것 이라고 합니다 OverView를 살펴봅시다 1)경로의 현재 점을 조작하여 경로의 형상을 설정합니다. 새 빈 경로 개체를 만들 때 현재 지점은 정의되지 않으며 명시적으로 설정해야 합니다. 세그먼트를 그리지 않고 현재 점을 이동하려면 이 move(to:)방법 을 사용합니다 라고 적혀있습니다 첫번째로 UIBezierPath객체를 만들어줍시다 두번째로 경로에 시작 위치를 뜻하는 move(to:)를 이용해 시작점을 찍도록 합시다 //첫번째 let path = UIBezierPath() //두번째 path.move(to: CGPoint(x: 0, y:0))위와 같이 객체를 만들고 시작하는 곳에 점을..

iOS 2021.12.21

[Swift]집단 자료형 - 집합(Set)

집합(Set) 같은 타입의 서로 다른 값을 중복 없이 저장할 때, 사용하는 집단 자료형인 Set 배열과 비슷하지만 데이터들이 중복으로 저장되지 않아 무조건 한 개의 값은 한 개뿐 없습니다 정의 집합을 정의할 때는 초기값을 사용하여 정의하거나 빈 집합을 선언하고 초기화하는 과정을 거쳐 정의할 수 있습니다 //정의 Set () var music: Set = ["Hip-hop", "Pop", "Classic"]insert(_:) 집합에 값을 추가하는 방식, 배열에서 append(_:)와 같다 music.insert("ballad") //결과: ["Hip-hop", "Pop", "Classic", "ballad"]배열과 동일하게 count가 존재합니다(같은 의미) isEmpty속성의 값이 true(집합이 비어있..

Swift 2021.12.21