- Total
목록오뚝이 개발자 (209)
꿈꾸는리버리
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/yhy3i/btrHOAltdpi/tYu8VrDyunKHcg5gkabpck/img.png)
🔧 문제 상황 우측 finder에는 존재하는 CustomTabView.swift가 좌측 xcode의 Views 파일 안에 CustomTabView.swift가 없는 걸.. 확인할 수 있다. 이 때문에 xcode가 CustomTabView를 못 찾아 빌드 에러가 발생했고 처음 접하는 문제라 너무 당황스러웠다..... -> 조금 알아보니까 이는 xcode에서 CustomTabView의 경로를 찾지 못해서 생기는 문제였다 ! 🌟 문제 해결 1) 마우스 우클릭을 통해서 add files to “프로젝트명” 클릭 2) finder안에 있는 CustomTabView.swift를 추가 3) Project -> Targets -> Build Phases -> Complile Sources 클릭 4) 이전에 경로를 못찾..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/brqN04/btrHxVQxbu2/1kkeKGEOwAYwmZ8gZUU6Hk/img.png)
이렇게 SFSymbol에서 다양한 색을 선택해서 SFSymbol을 좀 더 다채롭게 꾸밀 수 있다. 이번에 프로젝트에서는 다음과 같은 하트를 만들어야 해서 StoryBoard에서 다음과 같이 설정해 줬다. 그리고 하트를 취소, 다시 셀렉 할 수 있기 때문에 변경하는 코드도 작성해보려 한다. 이렇게 config를 변경해서 Layers의 색을 변경했다 ! let config = UIImage.SymbolConfiguration(paletteColors: [.systemGray5, .systemGray, .darkGray]) let image = UIImage(systemName: "heart.circle.fill", withConfiguration: config) button.setImage(image, fo..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cRxsAn/btrHrNsNqRH/8oBuhwovuaO7DyM8HPmB0k/img.png)
이렇게 가로모드가 지원이 안 되면 좋겠을 때가 있다.. 그저 귀찮아서! 이라면 가로모드도 지원이 되게 앱을 구현하는 게 맞지만, 내가 만들고자 했던 앱은 메모 앱이여서 가로모드를 지원할 필요가 없었다. 근데, 우측의 그림처럼 가로로 화면을 돌리면 이렇게 요소들이 배치가 된다. 방법) Supported interface orientations(iPhone)에 ⊖ 버튼을 눌러 item 1, item2를 삭제하면 가로모드를 사용하지 않을 수 있다. 짜란 ~
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/caWtff/btrHiG70HiH/QrNGd4uHKuGyKPg12rRNKK/img.png)
Class와 Struct에 대해서 공부하다보니까 궁금한게 생겼다.. 관련 블로그 링크 : struct와 class의 차이 / Copy On Write와 Copy On Assign 질문 Class의 property로 있는 Struct은 Class의 인스턴스를 만들고 복사한 후 값을 변경하면 달라질까? 반대로 Struct의 propert로 있는 Class는 Struct의 인스턴스를 만들고 값을 복사한 후 값을 변경하면 달라질까? 말로하면 어려우니 코드를 보자.. ㅎㅎ 1) 이렇게 하면 class1.structInstance.number와 class1_Copy.structInstance.number는 값이 같을까? struct Struct1 { var number = 2 } class Class1 { var ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/36jU9/btrHkorpwWF/hmzLwad9Kk6qwLelzpIJj0/img.png)
이전 블로그에서 class와 struct의 차이에 대해서 알아봤었다. 해당 블로그에서 필요한 부분만 발췌.. // FoodClass와 FoodStruct에 인스턴스를 각각 만들고 대입을 해준다. // class var food1 = FoodClass(name: "핏자", calorie: 100) var food_1 = food1 food1.name = "핏자유~" food1.name //"핏자유~" food_1.name //"핏자유~" // struct var food2 = FoodStruct(name: "핏자", calorie: 100) var food_2 = food2 food2.name = "핏자유~" food2.name //"핏자유~" food_2.name //"핏자" class의 경우에는 해당 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bNOdfk/btrHiWWQWMA/8SuZs6N4YVsgAV0QcTxrzk/img.png)
UserDefaults란? UserDefaults는 어떨때 쓰나요 ? 앱을 껐다 켜도 이 디바이스에 계속 값이 저장되었으면 좋겠어요 ~ 하는 것들 ! -> 나 홀로 방구석에서 신기해했던 건데, ㅎㅎ 시뮬레이터랑 프리뷰의 기기가 달라서 userdefault가 다르고, 시뮬레이터안에서의 기기종이 다르면 저장된 userdefault도 다르다 ! UserDefaults는 어떻게 쓰나요 ? key-value 쌍으로 저장이되기 때문에, key 값을 통해 로드할 수 있다. UserDefaults 추가 상식 1) 현재 프로세스 내에서 동기적으로 변경되고 영구 저장소 및 기타 프로세스에선 비동기적으로 변경 2) NSDate, NSString, NSNumber, NSData, NSArray, NSDictionary 들은 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/K5hHA/btrG2Z0kaWA/8MiCdhkEU9ic4dduXwFwB0/img.png)
결과부터 보여주자면, 이렇게 ! PR을 날렸을 때 깃헙 내에서 빌드가 되고 안되었음을 확인할 수 있다 ! ( 초록 체크와 빨간 엑스 ) 이렇게 되면, X가 뜬 PR은 보낸 사람은 pull 당겨서 고친 후에 push를 날려서 build가 되었을 때 다른 사람이 코드리뷰를 다는 게 좋겠죠 ??..??!?! 테스트를 하는데에도 사용이 되지만 나는.. 빌드 여부만 확인하면 되었기 때문에 ! ㅎㅎ .. 빌드 확인만 한다..! 방법 1) github의 레포에서 Action -> swift 검색 -> Configure 선택 2) 그러면 .github/workflows에 swift.yml이라는 파일에 저절로 아래와 같은 값들이 입력된다. workflow는 만들고자 하는 목적에 맞게 변경하면 된다. 나는 .. 안 해봤지..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/Grcko/btrGY2DdmCA/3VUIeNQubkEXOWkyJ7HJtK/img.png)
왜 사용하죠 ...? SwiftLint를 이전 챌린지에서 협업 때 사용해본 결과,, 통상적으로 사람들이 사용하는 code convention을 따르게 되어가고 있는 것 같았고, 팀원들과 비슷한 코드를 짜고 있다는 생각이 들어서 이번 챌린지에도 swiftLint를 도입하기로 했다 ! Lint란? Lint는 소스코드를 분석해서 코드 스타일이나 프로그램의 오류가 발생할 수 있는 부분을 찾아주는 도구로 활용된다. SwiftLint는 Swift언어에서 규칙에 어긋나는 코드를 찾아내서 경고 또는 빌드에러를 반환해준다. 1) Podfile에 pod 'SwiftLint'추가한 뒤 pod install 우선 .xcodeproj 가 있는 폴더(여기서는 cloneStanFord)를 터미널로 연다. 이 깃헙의 내용을 따라하면..