[iOS]this class is not key value coding-compliant for the key this class is not key value coding-compliant for the key라는 에러가 났다. 다 고치고 나서 쓰는 글이라 중간 과정이 빠졌지만 혹시나 다음번에 또 비슷한 상황이 생길 수도 있으니 기록용으로 짧게 글을 작성한다. 아주 간단한 에러였는데, 아웃렛을 수정하는 과정에서 제대로 삭제되지 않아 Table이 두 개가 있었다. 하나를 삭제하니 바로 문제가 해결되었다. iOS/Swift실전 2022.01.22
[iOS] 할 일 체크리스트 앱 만들기! To do list 새로운 프로젝트를 만들어주자. 이름은 ToDoList. 딱히 설정해야할 것은 없다. 스토리보드에 기존에 있던 뷰 컨트롤러는 삭제해주고(ViewController.swift 파일도 함께 삭제) 테이블 뷰를 끌어온다. 테이블 뷰를 선택한 상태에서 Editor - Embed in - Navigation Controller을 통해 네비게이션 컨트롤러를 추가한다. 기존에 스토리보드에 있던 뷰 컨트롤러를 삭제해서 entry point가 없으니 지정해주자. 네비게이션 컨트롤러를 선택하고 attributes inspector에서 View Controller 영역에서 Is Initial View Controller 체크체크! 네비게이션 바 영역에 Bar Button Item을 추가해주자. 이 버튼을 선택하고 인스펙터의 .. iOS/Swift실전 2022.01.19
[iOS] Swift 테이블 뷰 table view 기본적으로는 Table View Controller을 사용하지만 오늘은 이해를 위해 View에 Table View를 추가! Table View를 뷰에 꽉 채우기 위해 Constraints를 추가한다. 모든 방향에 0, 그리고 Constrain to margins도 체크를 해제하자. 아웃렛 변수 설정까지 고! UITableViewDelegate, UITableViewDataSource 두 가지 프로토콜을 채택하자. 여기서, UITableViewDelegate만 채택했을 때는 오류가 뜨지 않는다. why? 이 프로토콜은 필수 메소드가 없기 때문! XCode의 fix 기능을 사용하여 UITableViewDataSource의 필수 메소드를 추가해준다. 테스트용 코드 여기서 viewDidLoad 메소드에 들어가 .. iOS/Swift실전 2022.01.17
[iOS] 오토레이아웃 적용 완료 만들어둔 bmi앱에 오토레이아웃을 적용하는 연습을 진행했다. iPhone11, iPhone 8 Plus, iPad Pro에 빌드한 화면이고 모두 문제없이 잘 진행...되는듯... 했지만!!! 세로모드에서는 저 근육 팔(?) 아이콘 이미지가 나오도록 하는게 불가능할거라 생각하여, 아예 화면 밖으로 배치가 되도록 해봤다. 세로모드(landscape)를 한 번 확인해보자. 오~? 잘 되는 듯 했다. 그런데...... ???? ?!?!?!?! 처음으로 오토레이아웃 실습을 진행했기에 무엇이 문제인지 도저히 감이 잡히지 않았다. 스토리보드를 한 번 확인해보자. 가로화면에서는 아무 문제 없어 보이는 듯... 괜찮아 보였다. ?!?! 세로로 돌리니 웬 빨간줄이 엄청나게 나타난다. 확인을 해보니 충돌 제약 에러가 뜬다... iOS/Swift실전 2022.01.13
[iOS] Swift 오토레이아웃 auto layout 실전편! 2 캔버스 메뉴 소개 Update Frames 제약이 지정되어 있는 상황에서 오브젝트 위치를 옮기면 노란색 경고선이 표시된다. 이는 지정된 제약과 오브젝트의 위치가 맞지 않아서 생기는 문제인데 이 업데이트 프레임을 해주면 지정된 제약에 맞춰 오브젝트의 위치가 다시 맞춰진다. (밑에 예시를 첨부해둠!) Align 뷰의 가운데 수직, 수평선에 맞추는 제약 지정 가능 Add New Constraints 말 그대로 새로운 제약 지정이 가능하다. top, trailing, bottom, leading, 그리고 너비와 높이 제약 지정! Resolve Auto Layout Issues 오토레이아웃 관련된 이슈를 처리해주는 메뉴 선택된 뷰, 뷰 컨트롤러에 있는 전체 뷰 두 섹션으로 나누어져 있다. 예) Update Con.. iOS/Swift실전 2022.01.12
[iOS] Swift 오토레이아웃 auto layout 실전편! 1 지난번 실습했던 bmi 앱을 활용하여 오토 레이아웃을 연습할 예정! ▼ 지난 게시글 https://yejprogramming.tistory.com/24 [iOS] Swift 오토레이아웃 auto layout 이론편! 오늘은 iOS 앱 개발에서는 필수적으로 배워야한다고 강조되는 오토레이아웃을 정리해보려고 한다. 일단, 오토레이아웃이란 무엇일까? 애플에서 사용하는 레이아웃 엔진 Auto Layout dynamically calculat yejprogramming.tistory.com 해당 앱은 아이폰 11 기준으로 만들어진 앱이다. 이를 아이폰11, 아이폰8 시뮬레이터에 실행을 시키니 아이폰8 화면에서는 비율이 살짝 어색한게 눈에 보인다. 오토레이아웃을 적용하면 아이폰8에서도 아이폰11 처럼 비율이 잘 맞춰.. iOS/Swift실전 2022.01.11
[iOS] Swift 오토레이아웃 auto layout 이론편! 오늘은 iOS 앱 개발에서는 필수적으로 배워야한다고 강조되는 오토레이아웃을 정리해보려고 한다. 일단, 오토레이아웃이란 무엇일까? 애플에서 사용하는 레이아웃 엔진 Auto Layout dynamically calculates the size and position of all the views in your view hierarchy, based on constraints placed on those views. 오토레이아웃은 모든 뷰의 제약조건에 기반하여, 뷰 계층구조에서 동적으로 이러한 뷰의 포지션과 사이즈를 계산한다. 즉, 오토 레이아웃은 제약조건에 기반해 뷰의 위치 및 크기를를 지정하는 것이다. 이게 필요한 이유는 바로, 디바이스 별로 화면의 크기, 해상도가 다른데, 이 달라지는 화면에 맞는 뷰를 .. iOS/Swift실전 2022.01.10
[iOS]Swift 개념! Optional이란? 한 학기 동안 스위프트 문법 공부 및 iOS 앱 만들기 실습을 하며 옵셔널을 많이 사용했다. 하지만 그럼에도 불구하고 아직까지 제대로 이해하지 못 했다고 판단해 다시 정리해보기로 했다. 스위프트에서는 안전한 코딩을 위해 옵셔널이 중요한 역할을 한다고 한다. 옵셔널 타입은 변수 또는 상수에 아무런 값이 할당되지 않는 상황을 안전하게 처리하기 위한 방법을 제공한다. You use optionals in situations where a value may be absent. An optional represents two possibilities: Either there is a value, and you can unwrap the optional to access that value, or there isn.. iOS/Swift이론 2022.01.06