전체 글 230

[Swift] Tuist 모듈화 툴

Tuist..! 모듈화를 위한 툴이에요 드디어 해보게 되었는데요... Tuist에대한 정보가 많이 부족하더라구요 정보에 보탬이되고자 정리를 해서 공유해보려고해요! Tuist에러 때문에 쉐도우복싱도 많이하고... 시간 먹방도 많이했어요... 잘 생각해보고 도입하셔야합니다...🫠 협업을 하다보면 project.pbxproj 파일에서 많은 충돌이 일어나는 문제도 해결이되고 관리하는 측면에서도 이점이 있어서 사용한다고해요 Xcode의 설정이나 폴더들의 구조를 Project.swift파일에 정의하고 그 내용을 토대로 프로젝트를 구성해줘요 설치는 어렵지않아요 문서에 있는대로 따라가볼게요 tuist 3.9.0 기준으로 작성된 게시글이에요!! tuist 설치 curl -Ls https://install.tuist.io..

iyOmSd/Title: Swift 2022.08.05

[SwiftUI] Namespace + matchedGeometryEffect(feat. 상단탭바 UI)

SwiftUI로 위와같은 UI기능을 만드려고 하면서 알게 된 Namespace에 대해 간단하게 정리해보려고해요 먼저 개념을 둘러보면 프로퍼티를 포함하는 객체(뷰)의 영구 id로 정의된 네임스페이스에 접근할 수 있는 동적 속성 타입 객체의 정보를 id로 다른 뷰와 공유할 수 있는거에요 이 속성과 같이 사용하는게 View.matchedGeometryEffect(id: in:) 함수구요 동일한 키를 가진 다른 뷰가 새로운 뷰를 삽입하는 경우 시스템은 이전 위치에서 새로운 위치로 이동하는 하나의 뷰처럼 보이도록 window공간에 frame 사각형을 합칩니다. 일반적인 전환 메커니즘은 전환중 두 뷰가 각각 렌더링 되는 방식을 정의하며, 뷰의 렌더링이아닌 연결될 geometry에만 정렬합니다. 사용은 간단해요 상단..

[Swift] Combine의기본 Publisher이란?

예전에 Published를 스유를 기준으로 다뤘다면 이번에는 비동기를 기준으로 다룰 Publisher에 대해 알아보려고해요 둘이 다른건 아니에요! 스위프트 API에서 이미 많은 publisher를 지원하고있어요 이렇게 배열을 만들고 publisher로 변환할 수도 있구요 그래서 publisher가 뭔데? Combine프레임워크에 속한 타입이구요 Combine을 이용하면 delegate callback, completion handler closure를 사용하는대신 이벤트에대한 단일처리 체인을 만들 수 있어요 Combine의 핵심요소로 publisher, operator, subscriber가 있구요 그중 하나가 바로 publisher이죠 애플문서에는 Declares that a type can trans..

iyOmSd/Title: Swift 2022.06.13

[Swift] Xcode 템플릿 만들기

Xcode에서 파일을 생성할 때 이용할 수 있는 템플릿을 만들어 볼거에요 이 템플릿은 Xcode를 설치하면 제공되어있고 익숙한 거에요 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates 경로에 제공되고있어요 템플릿은 아래와같이 보통 UIKit클래스를 만들때 많이 이용하는 그 Cocoa Touch Class와 같이 선택하는 거에요! 이 모든항목들이 템플릿이죠 해당경로로가면 뭐가 되게많죠 기본적으로 필요한 요소는 4개에요 선택했을때 보여줄 템플릿 코드를 담을 파일 해당 템플릿을 나타낼 이미지 plist로 해당 템플릿의 정보를 제공해요 일반적으로 파일을 생성 할 때와 plis..

iyOmSd/Title: Swift 2022.04.26

[Swift] 테스트코드 Quick, Nimble, Mockingbird

테스트코드를 짜는데 도움을주는 라이브러리를 공부하면서 간단하게 알아보려고해요 제일유명한게 Quick과 Nimble이 있죠 Nimble 이 라이브러리의 장점은 엑스코드 XCTAssert에서 제공하는것 보다 많은 Assert들을 제공해요 expect 함수를 사용하구요 // Passes if 'actual' is not nil, true, or an object with a boolean value of true: expect(actual).to(beTruthy()) // Passes if 'actual' is only true (not nil or an object conforming to Boolean true): expect(actual).to(beTrue()) // Passes if 'actual' i..

iyOmSd/Title: Swift 2022.03.25

[SwiftUI] Button CornerRadius 효과주기 border, stroke, strokeBorder

개발하면서 버튼에 라운드를 적용했고 테두리를 주려고하는데 짤림현상이 나타났어요 삽질좀 한 내용을 공유하려고해요 문제가된 코드입니다 func 문제코드() -> some View { Button { print("버튼 클릭!") } label: { Text("테두리 있는 버튼") .foregroundColor(.pink) .frame(width: 200, height: 60) } .background(.black) .border(.pink, width: 2) .cornerRadius(8) } 코드만 보면 전혀 문제가 없어보이지만 실제로 버튼을보면 모서리쪽에 어색한 부분이 있다는걸 느끼실거에요 이러한 문제가있어서 다른방법으로 border를 줘봤지만 다 실패했었어요 (얇은 테두리시 문제 현상 발생해요 두꺼우면 티..

[Swift] iCloud 연동 CloudKit 사용하기(2/2) - 데이터 연결

2022.02.15 - [iyOmSd/Title: Swift] - [Swift] iCloud 연동 CloudKit 사용하기(1/2) - 추가 및 설정 앞 게시물에서 정의한 아이클라우드를 Xcode내에서 사용할 코드를 작성할거에요 저번에 Book 이라는 Record타입을 만들었죠 Xcode에서 그 타입을 불러오고 데이터를 넣어줄 수 있도록 코딩할거에요 CloudKit을 import해주고 기본적으로 알아야할 타입들은 CKRecord CKContainer CKQuery CKQueryOperation 이렇게 있어요 시뮬레이터로 실행할때 테스트하려면 우선 애플계정을 로그인해줘야해요 시뮬레이터 -> 설정 -> 프로필쪽에 계정로그인을 해줘야 아이클라우드 테스트를 해볼 수 있어요 안하면 권한문제로 테스트를 해볼 수가 ..

iyOmSd/Title: Swift 2022.02.16

[Swift] iCloud 연동 CloudKit 사용하기(1/2) - 추가 및 설정

(1애플 제품을 써본 사람이라면 iCloud의 강력함을 알고 있으실텐데요! 그 iCloud연동을 개발해보려고해요 CloudKit 프레임워크는 앱과 iCloud 컨테이너간에 데이터를 이동 할 수 있는 인터페이스를 제공합니다 CloudKit을 사용하여 앱의 기존 데이터를 클라우드에 저장하면 사용자가 여러장치에서 액세스 할 수 있습니다. iCloud 컨테이너라는 특수한 파일 시스템 위치에 데이터를 저장해요 우선 처음으로 프로젝트 >> signing & Capabilities >> iCloud를 아래와 같이 추가해주세요 옵션이 뭐가 되게 많네요 옵션들에 대해서 하나씩 느낌을 보자면 key value NSUserDefaults처럼 사용한다고해요 사용자당 maximum 1MB사이즈의 공간을 사용가능하다고하네요 지정..

iyOmSd/Title: Swift 2022.02.15

[Swift] Realm 데이터 공유 (Widget과 Main앱 데이터 공유) AppGroup

위젯앱을 개발하면서 Realm을 사용하여 데이터를 꺼내오려고 하는데 동작이 잘 되지않더라구요! 그래서 좀 삽질을 한 내용을 기록해볼까해요 현재 메인앱에서 데이터를 저장하고 불러오는게 가능해요 메인앱에서 사용하는 데이터를 위젯으로 불러와서 보여주려고 하는 방법입니다! 분명 Realm연결도 잘되고 잘 불러오는 것 같은데 메인앱에는 데이터가 있는데 위젯에는 자꾸 없다고 뜨더라구요 . . . 이 문제의 원인은 Realm의 파일 위치가 위젯과 메인앱은 달라요 당연히 메인에 있는 데이터를 불러올 수 없었다는...ㅠ // 위젯 🟣realm위치: file:///var/mobile/Containers/Data/PluginKitPlugin/5D8DF5A8-5857-4FBA-8341-80147A2781A7/Documents..

iyOmSd/Title: Swift 2022.02.11

[SwiftUI] Localization 다국어 적용하기

앱을 개발하면서 영어사용 국가에선 영어로 보여주고 대한민국에선 한글로 보여주도록 해주는 다국어 기능을 적용을 해보려고해요 Strings File을 하나 만들어요 이 때 이름은 Localizable.strings 으로 꼭 설정 해주세요 이 파일이름을 인식해서 로컬라이제이션을 적용시켜요 방금만든 파일에서 오른쪽 인스팩터창에서(커맨드 + 옵션 + 0) 로컬라이제이션을 눌러주고 프로젝트파일을 눌러서 이 밑에있는 로컬라이제이션에 +를 눌러주세요 Korean를 찾고 클릭! 이 로컬라이제이션파일을 다국어 처리할거기 때문에 클릭 설정도 됬고 파일도 생성되서 영어랑 한글이 지원되도록 적용됬어요 이제 설정은 끝났고 어떻게 사용하는지 해볼께요 우선 사용은 key = value; 형식으로 사용해요 해당 키에 맞는 스트링 값을..