Swift 23

WKWebView의 UIDelegate completion crash 해결

WKWebView에선 UIDelegate를 통해서 웹에서 일어난 alert, confirm, prompt에 대해서 custom ui를 제공할 수 있게 도와줍니다. UIDelegate에서는 CompletionHandler를 통해서 javascript와 값을 주고받는데, 핸들러를 호출하지 않거나, 두번 호출하게 되면 크래시가 나면서 앱이 종료됩니다. Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Completion handler passed to -[ViewController webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completion..

Swift 2023.03.17

RxSwift + Alamofire

버스 위치 정보 어플을 만들면서 RxSwift를 사용해서 API 호출을 하는 코드 예시입니다. reponseDecodable을 통해서 바로 데이터를 변환해서 적용했습니다. static func getRequest(url: String, param: [String: Any]) -> Observable { let header: HTTPHeaders = [ "Content-Type": "application/json" ] return Observable.create { observer -> Disposable in AF.request(url, method: .get, parameters: param, encoding: URLEncoding.default, headers: header) .responseDeco..

Swift 2022.07.14

iOS ScrollView 설정

안녕하세요. 반다이크 입니다. 오늘은 할때마다 헷갈리는 스크롤뷰 설정에 대해 알아보겠습니다. Storyboard 이용시 1. 먼저 스크롤뷰를 ViewController에 꽉차게 설정해줍니다. 그럼 이렇게 빨간색이 뜨는데 그 이유는 스크롤뷰가 자신의 정확한 크기를 모르기 때문입니다. 2. 스크롤뷰의 사이즈를 정하기위해 서브뷰를 추가해줍니다. 3. 서브뷰를 ScrollView의 Content Layout Guide에 컨트롤 + 드래그 한 후 그림처럼 4가지를 설정해줍니다. - 서브뷰의 콘텐츠 크기가 스크롤뷰 컨텐츠의 기준이 됨 혹시 사진처럼 + 숫자가 들어가있다면!! Constant를 0으로 바꿔줍니다. 이거때매 삽질좀 했습니다ㅠㅠ 4. 서브뷰를 Frame Layout Guide에 컨트롤 + 드래그 후 - ..

Swift 2022.06.05

iOS 분리된 타겟 내부 XML 파일 파싱

1. XML 문서 셋팅 1-1 XML 문서 추가 1-1 Dev, Store 폴더에 XML 추가 1-2 Dev xml 은 app_key의 value 변경 2. XMLParser 사용 2-1 ViewController에서 XMLParser 객체 생성 및 파싱 if let path = Bundle.main.url(forResource: "Settings", withExtension: "xml") { if let parser = XMLParser(contentsOf: path) { parser.delegate = self parser.parse() } } 2-2 XMLParserDelegate 구현 // 태그의 시작 func parser(_ parser: XMLParser, didStartElement elem..

Swift 2022.05.02

iOS GoogleService - Info 타겟 분리(FCM, Crashlytics)

분리된 타겟에 FCM 및 Crashlytics 연동하는 법을 알아보겠습니다. ** 이미 기존 타겟이 연결되어 있음을 가정 1. FCM 1-1. Firebase Console에서 새 앱 등록 클릭 ##자세한 부분은 해당 글 참고(2-3) https://vandijk.tistory.com/4 FCM, APNS 연동 방법 1. APNS 1-1 Apple Developer 접속 2-1 클릭 2-2 Key 추가하기 클릭(아이디당 2개 생성 가능) 2-3 체크 후 Continue 2-4 등록 완료 2-5 등록 완료 (p8 파일 다운로드 필수!) (한번 다운로드 이후 재시도 불.. vandijk.tistory.com 1-2 GoogleService-Info 다운로드 ##이름 변경 후 분리된 폴더 위치에 넣기 1-3 ..

Swift 2022.05.02