TIL/2021
-
210520 - TILTIL/2021 2021. 5. 21. 00:44
TextView placeholder TextField는 placeholde를 기본적으로 제공해주는데 TextView는 직접 구현을 해야 한다. 물론 저번에 구현한 거 같은데 다시 하려고 보니 까먹었으니 다시 공부했다. 몇 가지 방법이 있겠지만 간단하게 구현하는 방법은 Delegate를 이용하는 방법이다. 이렇게 textViewDidBeginEditing(_:) 과 textViewDidEndEditing(_:) 에서 상황에 맞게 구현하는 방법이다. TextView(_:shouldChangeTextIn:replacementText:) 에서 현재 텍스트 가져오기 이건 TextField에서 공부했던 내용인데 TextView에서도 다를 게 없으니 구현해봤다. range가 NSRange라 NSString으로 변환..
-
210519 - TILTIL/2021 2021. 5. 20. 01:02
MeasurementFormatter Notification으로 userInfo에 정보를 담아서 다른 VC로 보내고 이 정보를 원하는 format으로 변경시켜야 하는 경우가 많았다. 물론 내가 직접 수식과 string interpolation으로 변환시킬수도 있지만 제공해주는 기능이라면 사용하는 게 당연 예시로 길이만 했는데 제공하는 Unit이 많으니 아주 유용하다. Measure을 extension으로 확장해서 사용을 하면 표현 방식을 바꾸고 싶을때 유용하게 사용할 수 있다. Enum allCases TableView를 여러개의 section으로 표현하려는데 간단하고 보기 쉽게 어떻게 할까? 하다가 기존 1개 section을 이용할 때는 enum을 이용해서 이걸 그대로 이용할 수 있을까 해서 enum을..
-
210518 - TILTIL/2021 2021. 5. 19. 00:49
Showing Recent Messages The file "~~~~FilePath.entitlements" could not be opened. Verify the value of the CODE_SIGN_ENTITLEMENTS build setting for target "MungMungLog Dev" is correct and that the file exists on disk. 시뮬레이터에서는 잘 실행되는데 디바이스에서 실행하니 이런 에러가 났다. 문제는 Apple Login을 위해 .entitlements file을 추가했었는데 위치가 잘못 지정돼있어서 위치를 옮기고서 Target -> BuildSettings -> Code Signing Entitlements에서 경로를 수정하지 않아서 발생한..
-
210514 - TILTIL/2021 2021. 5. 14. 23:05
SceneDelegate, AppDelegate ViewController안에 timer라는 속성을 넣기보다 TimerManager라는 객체를 만들고 이 친구와 메시지를 주고받으며 구현해볼까??라는 생각에 Timer를 다시 만드는데 시간을 기록하기위해서는 앱이 Background에 있어도 시간이 기록되어야 했다. 그래서 어떻게 해야 할까 검색하던 중 SceneDelegate에서 해주면 된다는 것을 알고 코드를 작성하는데 문득 이 둘의 차이가 뭐지?? 라고 생각해보니 딱히 답할 수 없어서 공부를 했다. 기존에 사용하던 방식은 SceneDelegate는 iOS 13.0부터 생긴 개념이라 13.0 버전 이하에서 앱을 만들려면 SceneDelegate class 자체를 @available(iOS 13.0, *)..
-
210513 - TILTIL/2021 2021. 5. 14. 00:25
Swift 오늘 공부한 건 Conditional Statement 가물가물했던 건 Expression Pattern Conditional Statement if statement switch statement Pattern matching Interval matching Value binding pattern case let, case var where과 자주 사용된다. Tuple을 binding 하려면? case let(a, b): case (let a, var b): case (let a, _): Expression Pattern pattern, interval matching을 할 때 custom type이라면 뭘 어떻게 비교해야할지 모르기 때문에 이때 ~=를 override 해주면 매칭 시킬 수 ..
-
210512 - TILTIL/2021 2021. 5. 13. 00:56
Swift Custom Operator를 직접 만 들일이 없어서 선언하는 방법이 가물가물.. 해서 복습을 다시 했다, Operator Operator - Operand Unary operator Prefix operator Postfix operator Binary operator Infix operator Ternary operator Precedence (우선순위) Default precedence 단독으로 사용하면 괜찮지만 다른 연산자와 사용하면 에러가 발생한다. Associcativity (결합성) Left Right Remainder Operator a % b 나머지를 구할때 사용하는 연산자 정수만 지원 실수의 나머지를 구하고 싶다면 truncatingRemainder(dicidingBy:)를 ..
-
210509 - TILTIL/2021 2021. 5. 10. 01:07
Swift 기본적인 상수, 변수, 타입에 대해서 복습했다. Variable, Constant NamingConvension Scope DataType Type Inference Type Annotation Type Conversion conversion에 실패하면 nil이 return 될 수 있다. Type Alias SqlException: The DELETE statement conflicted with the REFERENCE constraint "FK_AspNetUsers_Family_FamilyId". Family 테이블을 삭제하려고 하는데 이러한 문제가 발생했다. User와 Family를 직접 연결했는데 familyID도 nullable로 선언했고 migration에서 Delete도 바꿔봤지만..
-
210507 - TILTIL/2021 2021. 5. 8. 01:11
Swift 복습 Swift 공부를 따로 안 하면 까먹으니까 계속해줘야 한다!! 오늘은 간단히 기본적인 부분을 복습했다. Token 공백, 구두점 Expression Evaluate Statement work Literal Identifier Keyword CompileTime - RunTime FirstClassCitizen Computer Architecture 단순히 앱 개발만 공부해서는 부족하니까 오늘부터 컴퓨터 구조에 대해서 공부를 시작했다. 컴퓨터구조 - 운영체제 - 네트워크 - 데이터베이스 이렇게 공부를 할 생각이다. Moore’s Law Number of transistors that can be integrated on single chip would double about every tw..