WidgetKit - UserDefault 로 위젯과 앱 데이터 공유하기
·
SwiftUI
1. 메인 앱 타겟의 Signing & Capabilities로 이동하여 App Groups 기능을 추가합니다. 2. + 버튼을 클릭하여 새 그룹을 추가하거나 이전에 만든 그룹을 선택하세요.3. 위젯에 대해서도 1번과 2번 단계를 반복하세요. 4. UserDefault(suiteName: _ ) 을 사용하여 앱(위젯과 앱) 간의 데이터를 교환할 수 있게 됩니다. - suiteName 은 App Group 에서 설정한 Container 의 이름과 반드시 같아야 합니다./// 현재 카테고리 저장하기func saveCurrentCategoryToUserDefault() { if let sharedDefaults = UserDefaults(suiteName: Constants.appGroupIdentifi..
WidgetKit 에서 SwiftData 로 저장된 데이터 사용하기
·
SwiftUI
1. 메인 앱 타겟의 Signing & Capabilities로 이동하여 App Groups 기능을 추가합니다. 2. + 버튼을 클릭하여 새 그룹을 추가하거나 이전에 만든 그룹을 선택하세요. 3. 위젯에 대해서도 1번과 2번 단계를 반복하세요.  4. SwiftData 모델을 포함하는 모든 Swift 파일이 앱 타겟과 위젯 타겟 모두에 추가되었는지 확인하세요. 5. 위젯에 modelContainer() 수정자를 추가하세요. 예를 들어, StaticConfiguration 또는 AppIntentConfiguration에 추가할 수 있습니다.
SwftUI - ShareLink 공유 기능 사용하기, 공유 인터페이스
·
SwiftUI
iOS 16.0 부터는 ShareLink 를 제공하여 SwiftUI 자체적으로 공유 Sheet 를 사용할 수 있게 되었습니다 iOS 16 이전에는 UIViewControllerRepresentable 이 존재하여 UIViewControllerRepresentable 로 대체 구현이 가능했습니다.  ShareLink 간단한 사용법var body: some View { ShareLink(item: URL(string: "https://developer.apple.com/xcode/swiftui/")!) ShareLink(item: URL(string: "https://developer.apple.com/xcode/swiftui/")!) { Label("Share", image: "My..
프로그래머스 - 점프와 순간 이동 feat. 최소 연산횟수
·
Algorithm/programmers
당연히 DP 로 접근해야 한다고 생각하였습니다. 하지만 배열을 만들어서 접근하게 될 경우 시간초과가 발생하여 다른 방법을 모색해야 했습니다.import Foundationfunc solution(_ n:Int) -> Int{ var answer: [Int] = [1,1,1] if n  문제 이해하기문제에서 현재 위치를 2배로 건너뛰는 것은 비용이 발생하지 않습니다, 그렇기 때문에 2로 나누어 떨어진다면 비용을 증가시키지 않고 만약 현재 위치가 2로 떨어지지 않는다면 -1 만큼 감소시키고 비용을 1씩 증가시키는 것으로 문제를 접근할 수 있겠습니다.import Foundationfunc solution(_ n:Int) -> Int{ var answer = 0 var a = n ..
프로그래머스 - 예상 대진표
·
Algorithm/programmers
import Foundationfunc solution(_ n:Int, _ a:Int, _ b:Int) -> Int { var count = 0 var A = a var B = b while A != B { A = (A + 1) / 2 B = (B + 1) / 2 count += 1 } return count}
프로그래머스 - 짝지어 제거하기 feat. 스택
·
Algorithm/programmers
시간초과 문제스택이 아닌 String 으로 문제를 접근하였을 때 시간 초과가 발생하였습니다.while 문 내부에 for 문으로 데이터를 계속 수정하는 방식은 입력값이 클 경우에는 매우 효율적이지 못했습니다.import Foundationfunc solution(_ s:String) -> Int{ var answer = s var sets = Set(answer.map { Character(String($0)) }) while true { let previous = answer for set in sets { answer = answer.replacingOccurrences(of: "\(set)\(set)", with: "") } ..
ytw_developer
IT Document