전체 글

· → StoreKit
이전 글 [StoreKit] 인앱결제 구현하기 1 - 기본 세팅 StoreKit 애플에서 인앱결제를 지원해주는 StoreKit 이 있다. 하지만 실제 서비스를 하는데에는 30% 라는 무시무시한 수수료를 감당해야 하기 때문에 비추하긴 하지만 간단한 결제를 쉽게 구현하기에 swift-library.tistory.com 간단하게 기본 세팅을 완료하였다. 이제 코드를 작성해볼 시간!! +_+ 1. StoreKitManager 파일 및 Class 추가 나는 StoreKitManager 라는 이름으로 파일을 만들었다. 이렇게 내가 만든 Product 를 타입으로 지정할 수 있다. import StoreKit class StoreKitManager: ObservableObject { @Published var pro..
· → StoreKit
StoreKit 애플에서 인앱결제를 지원해주는 StoreKit 이 있다. 하지만 실제 서비스를 하는데에는 30% 라는 무시무시한 수수료를 감당해야 하기 때문에 비추하긴 하지만 간단한 결제를 쉽게 구현하기에는 좋아보인다. 간단하게 인앱결제를 구현해 보기로 했다. 우선 iOS 16 버전 이상이 필요하고, StoreKit 2 를 사용하여 구현할 것이다. 1. 프로젝트 만들기 우선 나는 간단하게 프로젝트 IAPSample 이라는 앱을 만들었다. 2. 프로젝트에 In-App Purchase 추가하기 우선 인앱결제를 사용하기 위해서는 App Store Connect 와 연결된 아이디가 필요하다. 그리고 좌측 상단의 + Capability 를 눌러 In-App Purchase 를 추가해준다. 3. .StoreKit ..
· → CoreData
1. CoreDataManager 생성 이제 Persistence 까지 만들어 주었으니 CoreDataManager 를 만들어 줄 차례이다. 이름은 원하는대로... import CoreData @Observable final class CoreDataManager { let persistence: Persistence var mindLogs: [MindLog] = [] static let shared = CoreDataManager() static let preview = CoreDataManager(isPreview: true) private init(isPreview: Bool = false) { if isPreview { persistence = Persistence.preview } else { ..
· → CoreData
앱 안에 데이터를 저장하는 방법 애플 앱 안에 데이터를 저장하고 관리하는 방법에는 CoreData, Userdefaults, FileManager 그리고 이번에 추가된 SwiftData 가 있다. 그 이외에 Realm 이라는 오픈 소스도 있다. 이중에 이번엔 CoreData 를 사용해 볼 것이다. CoreData 란? Core Data | Apple Developer Documentation Persist or cache data on a single device, or sync data to multiple devices with CloudKit. developer.apple.com CoreData 는 CloudKit 과 연동이 가능하고 아주 손쉽게 데이터를 저장 가능한 애플의 Framework 이다...
Swift의 do, try, catch 구문은 에러 처리를 위한 구문이다. 보통 아래와 같은 형태를 많이 발견할 수 있다. do { // 예외가 발생할 수 있는 코드를 포함하는 블록 try // 예외가 발생할 수 있는 작업을 호출 } catch { // 예외가 발생했을 때 처리할 코드 } 코드 실습 아래와 같은 코드가 있다고 해보자. fetch 함수는 "Fetched" 를 반환하는 함수이다. 이 함수는 throws 를 통해 에러를 던지는 함수라는 것을 알 수 있다. isActive 를 받아서 false 면 에러를 던진다. enum fetchError: Error { case unknown case network } func fetch(_ isActive: Bool) throws -> String { if..
진수 변환스위프트 안에서 2진수를 10진수로 10진수를 2진수로... 그 외에도 다양한 진수를 쉽게 바꿀 수 있는 함수가 있다. 은연중에 나는 Int("123") 이런식으로 넣어주면 자동으로 Int 로 변환되어 나와서 별 생각 없이 사용하고 있었는데 이것은 사실 10진법으로 전환해주는 로직이였다. 10진수를 n진수로 바꾸기999999를 2진수, 16진수로 바꾸고 싶다면?let v = 999_999print(String(v, radix: 2))// Prints "11110100001000111111"print(String(v, radix: 16))// Prints "f423f"print(String(v, radix: 16, uppercase: true))// Prints "F423F" n진수를 10진수로 ..
커스텀 달력 내가 직접 만든 달력! 기존의 DatePicker 나 UICalendarView 는 제약되어 있는게 너무 많아서 하나하나 커스텀 하기 위해서 직접 달력을 만들었다. 넣은 기능 TabView 로 만들어 page 형태로 드래그가 가능하다. 우측 상단의 버튼을 통해서도 자연스럽게 이동이 가능하다. 오늘 버튼을 누르게 되면 이번달로 이동하면서 오늘이 선택된다. 날짜 선택이 가능하고 다시 선택하면 날짜 선택이 해제된다. 날짜마다 아래쪽에 내가 원하는 View를 넣을 수 있다. Frame 이 일정하다. 어느 달로 가더라도 4주, 5주를 계산하여 높이가 320 으로 일정하다. 코드 CalendarView, Date+Extension 두가지 파일로 구성했다. CalendarView 의 경우 172줄..
· → Xcode
오류 내용 Xcode 에서 아래와 같이 멋진 오류를 마주했다... 도저히 무슨 오류인지 알수가 없다. 시뮬레이터 관련 오류인 것 같은데... 해결 Product → Scheme 로 가서 Run → Environment Variables → + → OS_ACTIVITY_MODE: disable 해주면 해결된다! 참고 nw_connection_get_connected_socket_block_invoke 19 Connection has no connected handler The console of Xcode continue print __nw_connection_get_connected_socket_block_invoke 6 Connection has no connected handler stackoverf..
Swift librarian
Swift Library