[SwiftUI] View가 멈추는 현상
·
SwiftUI/개발
서론 안녕하세요 불망입니다! 이번에 ADA 마지막 프로젝트 개발 작업을 하면서 제가 뷰가 멈추는 현상에 직면했습니다. 그 문제를 해결하는 내용을 작성해봤습니다! 보시고 틀린 점이나 피드백 주실 부분 댓글로 남겨주시면 감사하겠습니다~! 문제 현상 ImageLoadingView 에서 유저가 선택한 PDF 파일을 Image로 변경할 때 뷰가 얼어버리는 현상이 생겼습니다. 눈으로 확인하시면 더 쉬우실 것 같아서 gif 파일을 보면 좋을 것 같아요 저희 코드에는 convertPDFToImages함수가 있는데 Pdf를 Image로 변경시켜주는 함수 입니다. 이 함수가 실행이 시작 되는 코드는 LoadingView가 나타나면(.onAppear) 실행이 됩니다. LoadingView가 나타나는 조건은 파일이 선택되었을..
[SwiftUI] 프로그램 차단 기능
·
SwiftUI/개발
작업 내용 프로그램 사용성 검증을 하기 위해서 우리의 Target인 선생님들에게 MVP(Minimum Viable Product)를 UT(User Test)를 해야하는 작업이 생겼습니다. UT를 진행하면서 UT동안만 프로그램을 사용할 수 있게 프로그램을 승인 및 차단하는 기능을 만들어야 합니다. 절차 TimeFetcher클래스안에 있는 fetchTime함수를 이용하여 서버에서 Json파일을 디코딩 하여 시간(date)을 가져옵니다. formatterDate를 통하여 Date Type을 String Type으로 변경하여 currentTime 변수에 넣어줍니다. checkTimeFormat함수를 이용하여 currentTime시간을 settingHour시간안에 속해 있을때만isAbled를 true로 값을 주어..
[AppleScript] Numbers 변환
·
AppleScript
현재 직면한 문제 현재 macOS App에서 applescript로 numbers app을 실행시키면 아래와 같은 오류가 발생합니다. AppleScript 실행 오류: { NSAppleScriptErrorAppName = Numbers; NSAppleScriptErrorBriefMessage = "Application isn\\U2019t running."; NSAppleScriptErrorMessage = "Numbers got an error: Application isn\\U2019t running."; NSAppleScriptErrorNumber = "-600"; NSAppleScriptErrorRange = "NSRange: {30, 8}"; } error -600 해결 방법 케이스 첫번째 방법..
AppleScript
·
AppleScript
macOS 자동화 작업을 해야 하는 상황이 생겼다. 리서치를 해보니 AppleScript로 macOS관련 다양한 자동화를 할 수 있던것을 찾았고 그것에 대해서 공부하고 정리해봤다. AppleScript란? 애플이 개발한 자동화 스크립트 언어 사용자의 작업을 간소화 하고 일상적인 업무 프로세스 자동화에 도움 애플리케이션 간의 상호작용 및 통합도 쉽게 구현 가능 macOS 운영체제와 통합되어 있음 AppleScript로 할 수 있는 것들 파일 및 폴더 관리, 애플 애플리케이션 작업 자동화, 작업 스케줄링 및 다른 일상적인 작업을 자동화 할 수 있음 Safari, Mail, iTunes, Pages, Numbers 등 Apple 애플리케이션을 제어하고 스크립트로 작업 수행 macOS 시스템 설정 변경 또는 사..
[SwiftUI] Combine - 기본
·
SwiftUI/정리
Combine을 쓰면 좋은 이유 아래 코드 예시는 로그인을 할때 userId와 userName을 가져올때 사용할 수 있는 코드이다. switch case를 사용하며 값이 두개 밖에 처리 할 것이 없을때는 사용 가능하겠지만 값이 점점 많아지고 복잡해지면 switch case를 이용해서 하기 어려워질 것이다. func fetchUserId(_ completionHandler: @escaping (Result ) -> Void){ DispatchQueue.main.asyncAfter(deadline: .now() + 2) { let result = 24 completionHandler(.success(result)) } } func fetchName(for userId: Int,_ completionHandl..
[SwiftUI] Combine
·
SwiftUI/정리
Combine Framework 시간에 따라 값들을 처리하기 위한 선언적인 Swift API 시간에 따라 변할 수 있는 값으로 노출하기위해 publisher를 선언합니다 publisher로부터 받아오기 위한 subscriber를 선언합니다. publisher는 시간에 따라 일련의 값을 전달할 수 있는 타입을 선언하며, 연산자를 사용하여 상위 발행자로부터 받은 값을 처리하고 다시 발행할 수 있습니다. subscriber는 publisher로부터 이벤트를 얼마나 빨리 받을지 제어 할 수 있습니다. 텍스트 필드의 업데이트와 URL 요청, 응 답 처리 등을 조율할 수 있습니다. 코드를 더 읽기 쉽고 유지 보수하기 쉽게 만들 수 있습니다. 이벤트 처리 코드를 중앙 집중화하여 중첩된 클로저 및 규약 기반 콜백과 같..