분류 전체보기 117

swift 오토 레이아웃 진행과정에 대해 공부해보자.

일단 오토레이아웃 진행과정? 언제 실행되는지에 대해 알아보라고해서 찾아보게 되었다.iOS Auto Layout 심층 분석본 글에서는 기본적인 오토레이아웃 튜토리얼들에서 잘 다루지 않는 커스텀 뷰에 오토레이아웃(auto layout)을 적용하는 방법과, 전반적으로 레이아웃 시스템이 어떻게 동작하는지를 중심으로 설명해보도록 하겠다. 오토레이아웃의 종류나 기본적인 적용방법들은 다른 좋은 튜토리얼들이 많으니 다루지 않을 예정이다.AutoLayout Programmatically 사용하기개인적으로 오토레이아웃을 사용할 때도 인터페이스빌더를 되도록이면 쓰지 않으면서 코드만로 작성하는 방법을 선호한다. 애플에서 제공하는 NSLayoutConstraint 의 경우 가독성이 매우 떨어지는 단점이 있고, 이를 보완하기 위..

카테고리 없음 2024.07.02

swift 단축키

네비게이터 영역command⌘ + 0  으로 접기/펼치기 가능command⌘ + 1~9 으로 메뉴 이동 가능인스펙터 영역command⌘ + option⌥ + 0 으로 접기/펼치기 가능command⌘ + option⌥ + 1... 으로 메뉴 이동 가능네비게이터, 인스펙터 예시 코드command⌘ + 방향키 : 시작점부터 끝까지 커서 이동command⌘ + Shift⇧ + 방향키 : 시적점부터 끝까지 블럭 선택블럭 선택 예시 option⌥ + 방향키 : 한 단어, 기호 단위로 커서 이동option⌥ + Shift⇧ + 방향키 : 한 단어, 기호 단위로 블럭 선택블럭 선택 예시 control⌃ + Shift⇧ + 방향키 : 세로 여러줄 블럭 선택 , 커서 이동 가능( 한꺼번에 코드 변경 가능)블럭 선택 예시 ..

카테고리 없음 2024.07.02

swift firebase 연동하면서 생긴 에러... Exception NSException * "`[FIRApp configure];` (`FirebaseApp.configure()` in Swift) could not find a valid GoogleService-Info.plist in your project. 해결해보자

react-native에서는 빌드가 성공이라고 뜨는데 앱자체는 떴다 바로 종료 되서 xcode로 빌드를 실행해보니 Exception NSException * "`[FIRApp configure];` (`FirebaseApp.configure()` in Swift) could not find a valid GoogleService-Info.plist in your project. Please download one from https://console.firebase.google.com/." 0x00000002826939f0라는 에러가 발생했다. 원인 : 파이어베이스에서 알려준대로 GoogleService-Info.plist 파일을그냥 넣었으나AppDelegate.m 에서 정의한 GoogleService-..

카테고리 없음 2024.07.02

swift 생명주기 (life cycle) 알아보자

오늘 특강을 들으면서 생명주기에 대해 잘 모른다는 것을 느끼고 한번 찾아보았다. 출처는 여기서 해왔으니 자세한 내용은 여기서 보시면 될 듯 하다   https://zeddios.tistory.com/43 [ZeddiOS:티스토리]  나는 다시 내가 찾기 힘들어서 남기는 것이니 자세한 내용은 위쪽에 참고하시면 좋을거 같습니다. View Contorller의 생명주기?이게 뭘까요?앱들은 이 'View Contorller'로 이루어져있는데요,화면이 하나로 되어있는 앱 들도 물론 있겠지만, 보통 하나 이상의 화면이 있죠?이 각각의 뷰컨들은 생명주기를 가지고 있답니다.생명주기라고 하니 언제 태어나고 언제 죽는 이런 주기같네요?  뷰컨에게서는 생명주기가 어떤걸까요?말그대로 '보여졌다 사라지는'주기겠죠?'보여졌다'-..

카테고리 없음 2024.07.02

swift 다양한 에러 접하기 logging error 또는 this class is not key value coding-compliant for the key

일단 에러 메시지가 나오면... 나도모르게 무시하는 경우가 있고 에러를 보고 문제를 찾을 생각을 안했다...근데 오류를 읽어야지... 문제를 빨리 해결할 수 있다.할면서도 불라불라 오류들을 보면 외면하고 싶은....  그래서 오늘은 오류를 외면하지말고 정면으로 부딧치기로해서 오류를 해결했다.  첫번째 로깅 초기화 하면서 오류가 발생한 것... 로그 메세지가 누락될 수 있으면 나타내는 오류 ~ 해결법은   이미지와 같이 + 누른다음에 IDEPreferLogStreaming=YES 입력후 close 누르면 된다 ~  두번째 자주하는 실수....아웃렛 이름을 바꾸고 싶다고 코드줄에만 바꾸게 된다면 아울렛 컬렉션에서는 변경이 안되어 잇기 때문에삭제하고 무조건 다시 연결해야된다.... 이런 오류를 놓치면... 쓸..

카테고리 없음 2024.06.28

swift UIButton.Configuration 개념 대해 공부해보자

오늘 UIButton 만들면서 버튼을 한번에 어떻게 만들까 고민이 많았다. 그러면서 찾아보게 된 기능 ~ 이거 쓰면 조금더 수월하게 사용할 수 있다는 생각을 했다. 단 ios 15 + 가능하다는 것을 참고하시면 좋다... 다 만들고 안되면 슬프니깐  iOS 15+버튼들을 유형별로 일관성 있는 방식으로 손쉽게 사용할 수 있게하기 위함이다 얼마나 좋은가 반복적으로 안적어도 되니 UIButton Configuration의 주요 속성title: 버튼에 표시되는 텍스트를 지정합니다. NSAttributedString 형식으로 설정할 수 있어 텍스트의 스타일링과 포맷팅을 자유롭게 적용할 수 있습니다. 또한, 버튼의 상태별로 다른 텍스트를 설정할 수도 있습니다.image: 버튼에 표시되는 이미지를 지정합니다. UII..

카테고리 없음 2024.06.24

swift 접근제한자 private 공부해보자

사용은 하고 있는데 어디에 사용해야 되는지 적합한지 몰라서...공부해볼려 합네다접근제어 종류 Swift에서는 아래의 5개의 접근레벨을 제공합니다.KeywordAccess LevelRangeopen개방 접근 수준모듈 외부에서도 접근 가능public공개 접근 수준모듈 외부에서도 접근 가능internal내부 접근 수준하나의 모듈 내부에서만 접근 가능fileprivate파일 내부 접근 수준하나의 파일 내에서만 접근 가능Private비공개 접근 수준정의한 블록 내부에서만 접근 가능open & public :Open과 Public 접근자 모두 선언한 모듈이 아닌 다른 모듈에서 사용가능합니다. 두 접근자의 차이점은 open은 다른 모듈에서 오버라이드와 서브클래싱이 가능하지만 public 접근자로 선언된 것은 다른 모..

카테고리 없음 2024.06.20

swift enumerated() 대해 알아보자

일단 야구게임을 풀면서 enumerated() 사용하는 것을 보았다.이전에도 한번 사용하긴 했는데 나는 다른 방식으로 사용을 하여 배열에서 값을 알아냈다...머 아무튼 다시 이런 방법이 있구나 생각하게 되어서. 까먹지 않게 메모장에 남긴다. "map을 쓸 때 element 랑 추가로 index는 동시에 사용하는 방법https://developer.apple.com/documentation/swift/repeated/enumerated()/  바로 이 함수입니다!!   평소에는 for in 구문을 통해서 배열의 첫 인덱스부터 마지막 인덱스까지 얻었습니다. map을 사용할 때는 index를 미리 선언하고 값을 증가하며 사용 했습니다. 이젠 이 함수를 사용하면 됩니다!!  https://developer.ap..

카테고리 없음 2024.06.18

swift 내장함수 print 안에 separator 과 terminator 알아보자

일단 separator 이전에 기능에서 사용해보면서 알고 있엇는데 terminator은 처음 알게되어서 기록에 남겨야 될거 같아 적어본다.  print(”Hello World”) 로 주로 사용하기 때문에우리는 func print(_ item: Any) 의 형태라고 생각하겠지만..사실 print문의 정의는func print(_ items: Any..., separator: String = " ", terminator: String = "\n")로 separator과 terminator Parameter가 있는 걸 알 수 있다기본값이 지정이 되어있었기 때문에 우리가 입력해주지 않아도 잘 굴러갔던 것 ~ separatorA string to print between each item. The default i..

카테고리 없음 2024.06.18

swift 고참함수 compactMap, flatMap에 대해 알아봅시다.

compactMapReturns an array containing the non-nil results of calling the given transformation with each element of this sequence.컨테이너의 각 요소를 조건을 지정하여 호출할 때, nil 이 아닌 배열을 반환합니다.선언 (Declaration)Apple 에서는 compactMap 이 아래처럼 정의되어 있네요.func compactMap(_ transform: (Self.Element) throws -> ElementOfResult?) rethrows -> [ElementOfResult]매개변수 (Parameters)transformtransform 는 컨테이너의 요소를 매개변수로 받아 선택적 값을 반환하는..

카테고리 없음 2024.06.18