Swift

    [Swift] Swift 공식문서 정리 - 3(클래스 & 구조체)

    클래스와 구조체의 공통점 - 값을 정의하기 위한 프로퍼티 정의 - 기능을 정의하기 위한 메소드 정의 - subscript 정의 - 이니셜라이저 정의 - 기본 구현에서 기능 확장 - 프로토콜 제공 클래스만 가능한 기능 - 상속 : 클래스의 여러 속성을 다른 클래스에 물려 줌 - 타입 캐스팅 : 런타임에 클래스 인스턴스의 타입을 확인 - 소멸자 : 할당된 자원을 해제 시킴 - 참조 카운트 : 클래스 인스턴스에 하나 이상의 참조가 가능 선언 문법 class SomeClass { // 클래스 내용은 여기에 } struct SomeStructure { // 구조체 내용은 여기에 } 예시 struct Resolution { var width = 0 var height = 0 } class VideoMode { va..

    [Swift] Swift 공식문서 정리 - 2(제어문, 함수)

    제어문 For-In Loops 순서대로 순회하기 위해 사용 for index in 1...5 { print("\(index) times 5 is \(index * 5)") } // 1 times 5 is 5 // 2 times 5 is 10 // 3 times 5 is 15 // 4 times 5 is 20 // 5 times 5 is 25 While 조건이 거짓일 때 까지 반복 var square = 0 var diceRoll = 0 while square < finalSquare { // roll the dice diceRoll += 1 if diceRoll == 7 { diceRoll = 1 } // move by the rolled amount square += diceRoll if square ..

    [Swift] Swift 공식문서 정리 - 1(기본연산자, 문자열, 콜렉션 타입)

    [Swift] Swift 공식문서 정리 - 1(기본연산자, 문자열, 콜렉션 타입)

    연산자 nil 병합 연산자 - 형태 : a ?? b - 의미 : a가 nil(값이 없다)일 경우, b를 반환한다는 의미. let userColor = "green" var nilColor: String? var colerNilCheck = nilColor ?? userColor // nilColor가 nil 값, 즉 userColor가 들어간다. 문자열과 문자 문자열 리터럴 - 형태 : let something = "something" 여러줄 문자열 리터럴 let quotation = """ The White Rabbit put on his spectacles. "Where shall I begin, please your Majesty?" he asked. "Begin at the beginning," ..

    [iOS] Key-Chain이란?

    [iOS] Key-Chain이란?

    프로젝트를 진행하며 accessToken을 안전하게 처리하는 방법에 대해서 찾아보던 도중, userDefaults로는 안전하게 처리할 수 없겠다고 판단했고, 실제로도 그랬다. 따라서 Key-Chain을 사용해야하는 상황인데, 블로그에 정리하며 알아보겠다. 키체인이란 ? - 애플이 제공하는 사용자를 대신하여 소규모 데이터들을 안전하게 저장해주는 저장소 위와 같은 과정들은, 애플에서 처리해주기 때문에 우리는 어떻게 사용할 수 있는지 알아보면 된다. 키체인의 특징 - 애플리케이션은 자기 자신의 키체인에만 접근할 수 있다. - 앱을 삭제해도 키체인에 저장된 정보는 삭제되지 않는다. - 키체인 그룹을 사용하여 서로 다른 앱에서도 저장된 데이터를 공유할 수 있다. - 비밀번호, 개인키 등 보호가 필요한 정보는 암호..

    [iOS] AppDelegate란 ?

    [iOS] AppDelegate란 ?

    오늘은 AppDelegate에 대해서 정리해보겠다. iOS 13 버전 이후에 SceneDelegate가 추가되어서 AppDelegate의 일부 역할은 SceneDelegate가 하게 되었고, AppDelegate는 Session Lifecycle에 대한 역할이 추가되었다. 또한 window -> scene으로 대체되었다. (Scene : Scene에는 UI의 하나의 인스턴스를 나타내는 windows와 view controllers가 들어있다. 또한 각 scene에 해당하는 UIWindowSceneDelegate 객체를 가지고 있고, 이 객체는 UIKit와 앱 간의 상호작용을 조정하는 데 사용한다. Scene들은 가튼 메모리와 앱프로세스 공간을 공유하면서 서로 동시에 실행된다. 결과적으로 하나의 앱은 여러..

    [프로젝트] iOS 시간표 프로젝트 - 12

    [프로젝트] iOS 시간표 프로젝트 - 12

    벨로그에서 티스토리로 옮긴 후 첫 포스팅이다. 그동안 포스팅에 소홀했던 나를 반성한다.(항상 하는 것 같다..ㅋ) 나는 일단 시간표 프로젝트는 마무리 했고, 개발자 계정을 등록한 상태이다. 그동한 진행했던 작업을 먼저 나열한 후에 글을 써보겠다. 1. navigationController -> modal 2. 데이터 전달 방식 변경 3. 오토레이아웃 4. textField 글자 수 제한 5. 가로모드 제한 6. 다크모드 제한 7. 화면 터치 시 키보드 바 숨김 8. launchScreen 9. 컴파일 에러 수정 10. 오픈소스 라이센스 명시 11. 기타 잡다한 UI 및 오토레이아웃 수정.. 커밋 메세지를 보면서 기억을 되살려보았다. 반씩 나눠서 두 개의 글로 포스팅하면 될 듯 하다. 1. navigati..

    [프로젝트] iOS 시간표 프로젝트 - 11

    [프로젝트] iOS 시간표 프로젝트 - 11

    이번 포스팅은 시간표 정보를 어떻게 만들었는지에 대한.. 포스팅이다! 시간표 정보 굉장히 간단한 화면이지만, 동시에 가장 많은 코드를 가지고 있는 파일이다 .. 해당 화면에서 처리해야 하는 기능 강의 추가 시간표 중복 확인(이 기능때문에 머리 빠질뻔 했다.) 시간표 수정 1. 시간표 추가 이 기능은 비교적 쉽게 완성했다. 사실 처음에는 감도 안잡혔긴 한데, 내가 사용한 방법은 1. 완료 시 데이터베이스에 강의 데이터를 삽입한다. 2. 시간표 화면에서 데이터베이스를 받아온 후 배열에 추가한다. 3. 이후 시간표 화면으로 push 이런 로직으로 기능을 완성했다 ! 하지만 나에게 닥쳐올 시련은 모른채 .. 2. 시간표 중복 먼저, 이 기능을 구현하면서 든 생각이 1. 코드를 구현하기 전에 설계를 완성해야 한다..

    [프로젝트] iOS 시간표 프로젝트 - 10

    [프로젝트] iOS 시간표 프로젝트 - 10

    굉장히 오랜만에 포스트를 한다. 그동안 거의 모든 기능을 완성시켰는데, 기능에만 집중하느라 블로그 포스팅을 열심히 못했다. 어디서부터 어떻게 써야할지 .. ㅠㅠ 깃허브는 어느새 .. 꽤 빽빽해졌다 😁 올해 첫 단추를 잘 끼우고 있는 것 같아 기분이 좋다 ! 마지막 포스트에서의 문제점 tableView의 데이터는 불러와지는데, 막상 선택 시 기존 데이터가 불러와지는 문제는 문제가 있었다. 해당 문제는 tableView?.reloadData() tableView?.beginUpdates() 코드 두줄로 해결했다 😁 어느 곳에 써야할지는 매번 다르지만, 적용시켜보면서 에러를 확인하고 계속 변경해주면서 적당한 위치를 찾았다 ! 지난번 포스트에 이어서 시간표 추가, 시간표 추가 완료 버튼을 먼저 작성해보겠다. 먼..

    [프로젝트] iOS 시간표 프로젝트 - 9

    [프로젝트] iOS 시간표 프로젝트 - 9

    이번 포스팅은 저번 포스팅에 이어 한번 진행해보겠다! userDefaults를 사용하여.. 유저가 보고있는 시간표를 확인하는 기능을 만들었다. 시간표 생성 시 userDefault key-value를 설정해주고, 설정된 value를 화면 좌측 상단에 보여준다! 지금은 디자인부분은 신경쓰지 않고 기능 구현에만 신경 쓴 탓에, 많이 구리지만 ..! 또한 더하여 시간표 목록 - > 다른학기 시간표 선택을 위한 기능을 하나 더 만들었다. 이부분을 tableView로 진행했는데 실수한 부분은 이 부분에서 Restoration ID를 설정했는데 그래서 자꾸 에러가 떴다. 헷갈릴 수 있지만 Identifier에서 설정을 해야한다..! 만약 다른 시간표를 누를 시 역시 userDefaults의 value도 변경해주었다..

    [프로젝트] iOS 시간표 프로젝트 - 8

    [프로젝트] iOS 시간표 프로젝트 - 8

    오랜만에 글을 쓴다. 그동안 기능 구현에 매진한 탓에 블로그 쓸 시간이 많이 없었다. 물론 블로그를 꾸준히 쓰는게 여전히 좋다고 생각한다.. 밀린 포스팅.. 나를 반성한다.. 구현한 기능은 저번 시간에 시간표 정보에서.. 완료 버튼을 누를 시! 시간표 추가 및 데이터베이스에 저장! 을 시작하기 전에. 2주 동안 개발진행을 못한 일이 있었다. 다름 아닌 realm DB를 쿼리하는 과정에서 계속해서 생긴 오류때문에 진행하지 못했는데, 그 오류 먼저 알아보겠다. 전부터 발목을 잡은 EXC_BAD_ACCESS 에러 데이터베이스 쿼리를 하려고 하면 계속 에러가 떴다. 도저히 구글링해도 나오지 않았고.. 심지어 Realm github에 까지 문의를 했다. 해당 에러의 이유는 --> 라이브러리를 업데이트 하면서 생겼..